Aller au contenu

Pb d'importation de base de données...


Sujets conseillés

Posté (modifié)

Bonjour le Hub,

J'ai un petit mutualisé chez OVH et je n'arrive pas à importer ma base de données sur mon hébergement... J'ai pourtant essayer de suivre les instructions fournies sur le site suivant mais cela ne fonctionne pas...

J'ai donc écrit le petit fichier php suivant :

<?php
echo "Décompression du fichier.....";
system("gunzip Labase.sql.gz");
echo "Votre base est en cours de restauration......";
system("cat Labase.sql | mysql --host=**host** --user=**user** --password=**pass** **LabaseOVH**");
echo "C'est fini. Votre base est en place sur cet hébergement.";
?>

je n'ai aucun message d'erreur mais je ne retrouve pas mes données sur ma base chez OVH... Je ne trouve même pas le fichier décompressé dans le répertoire en question...

Quelqu'un aurait il une idée pour me dépétrer de ce soucis???

Par avance, merci!

[Edit]

J'ai essayé avec le fichier suivant :

<?php
echo "Décompression du fichier.....";
system("gunzip Labase.sql.gz",$err1);
echo $err1;
echo "Votre base est en cours de restauration......";
system("cat Labase2.sql | mysql --host=**host** --user=**user** --password=**pass** **LabaseOVH**", $err2);
echo $err2;
echo "C'est fini. Votre base est en place sur cet hébergement.";
?>

où Labase2.sql est le fichier Labase.sql.gz déjà dézippé...

J'ai $err1=0 et $err2=1... :unsure:

Modifié par Bourinho
Posté (modifié)

Bonjour,

Il me semble que la comande pour importer tes données serait plutot :

system("mysql --host=**host** --user=**user** --password=**pass** **LabaseOVH** < ./Labase2.sql > ", $err2);

non ?

Modifié par Jeromnimo
Posté

Pourquoi passer par une étape de décompression vers un fichier ???

Essaye plutôt directement:

system("zcat Labase.sql.gz | mysql --host=**host** --user=**user** --password=**pass** **LabaseOVH**");

Posté

Bonjour à tous,

Voila le fichier php que j'ai utilisé (je le met pour être sûr de la syntaxe, ça n'était peut être pas clair...)

<?php
$fichiergz='***.sql';
$host='***';
$user='***';
$password='***';
$labaseOVH='***';
echo "Votre base est en cours de restauration......<br>";
echo system('zcat '.$fichiergz.'.gz | mysql --host='.$host.' --user='.$user.' --password='.$password.' '.$labaseOVH,$err);
echo "<br>".$err;
echo "<br>C'est fini. Votre base est en place sur cet hébergement.";
?>

Voilà ce que j'obtiens à l'affichage de la page:

Votre base est en cours de restauration......

1

C'est fini. Votre base est en place sur cet hébergement.

Ca semble plutôt bon signe...

Le seul problème, c'est que quand je vais sur phpMyAdmin, il n'y a rien!

Il est où le problème? :unsure:

Merci pour votre aide!

Posté

As-tu essayé avec la commande que je t'ai donné ?

Au lieu de faire un pipe ('|' entre zcat et mysql) essaye avec une redirection de flux ('<')

Posté

Pas de redirection (> ou <) entre deux commandes !

Je maintiens qu'entre zcat et mysql il FAUT un pipe....

zcat écrit sur stdout, et mysql lit le stdin. Donc le pipe | est ce qu'il faut !

Posté (modifié)

Salut et merci Jeromnimo....d'avoir essayer ;)

Voilà ce que cela me donne sur la page:

Votre base est en cours de restauration......

2

C'est fini. Votre base est en place sur cet hébergement.

avec le fichier php suivant :

<?php
$fichiersql='***.sql';
$host='***';
$user='***';
$password='***';
$labaseOVH='***';
echo "Votre base est en cours de restauration......<br>";
echo system('mysql --host='.$host.' --user='.$user.' --password='.$password.' '.$labaseOVH.' <./'.$fichiersql.'>',$err);
echo "<br>".$err;
echo "<br>C'est fini. Votre base est en place sur cet hébergement.";
?>

A priori, le $err est plus élevé avec ta solution...c'est mieux?

Mais je n'ai toujours rien sous phpMyAdmin (j'utilise celui d'ovh sur h**p://start.ovh.net/...)

Merci pour votre aide et je pense que l'on devrait y arriver!!! Enfin, j'espère :whistling:

[Edit]

Voilà le fichier base.sql que j'utilise

-- phpMyAdmin SQL Dump

-- version 2.6.1

-- http://www.phpmyadmin.net

--

-- Serveur: localhost

-- Généré le : Jeudi 19 Octobre 2006 à 00:46

-- Version du serveur: 4.1.9

-- Version de PHP: 4.3.10

--

-- Base de données: `prv`

--

-- --------------------------------------------------------

--

-- Structure de la table `departements`

--

DROP TABLE IF EXISTS `departements`;

CREATE TABLE `departements` (

`Numero` int(2) NOT NULL default '0',

`Nom` varchar(30) NOT NULL default '',

PRIMARY KEY (`Numero`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;

--

-- Contenu de la table `departements`

--

INSERT INTO `departements` VALUES (1, 'AIN');

INSERT INTO `departements` VALUES (2, 'AISNE');

INSERT INTO `departements` VALUES (3, 'ALLIER');

Et j'ai essayé en utilisant "use MaBaseOVH;" au début de ce fichier...

Modifié par Bourinho
Posté

Plutôt que de faire:

system("mysql --host=**host** --user=**user** --password=**pass** **LabaseOVH** < ./Labase2.sql > ", $err2);

essaie de faire

die("mysql --host=**host** --user=**user** --password=**pass** **LabaseOVH** < ./Labase2.sql > ");

et dis nous précisément ce que tu obtiens (en effaçant le mot de passe)

Ca ne lancera pas la commande, mais cela permettra de voir ce que tu envoies !

Peut-être faut-il mettre le chemin complet vers 'zcat' et 'mysql'.

Dan

Posté
Pas de redirection (> ou <) entre deux commandes !

Je maintiens qu'entre zcat et mysql il FAUT un pipe....

zcat écrit sur stdout, et mysql lit le stdin. Donc le pipe | est ce qu'il faut !

Bien vu ;-) mais dans ma solution, y'a ni cat, ni zcat :-P

Posté
Bien vu ;-) mais dans ma solution, y'a ni cat, ni zcat :-P

Alors c'est que tu t'es mal exprimé :whistling:

As-tu essayé avec la commande que je t'ai donné ?

Au lieu de faire un pipe ('|' entre zcat et mysql) essaye avec une redirection de flux ('<')

Posté

Mea culpa ^^

J'aurais dû être plus explicite...

Enfin bref, le principal c'est de trouver une solution pour Bourinho

@ Bourinho : dans ton fichier sql tu n'as pas de requete de selection de base ou autre qui pourrait empecher d'executer correctement l'ensemble du fichier (du genre SELECT DATABASE) ? L'uitlisateur que tu utilises a bien tous les droits nécessaires ?

Posté

Je redonne le fichier que j'utilise pour faire ce test :

-- phpMyAdmin SQL Dump

-- version 2.6.1

-- http://www.phpmyadmin.net

--

-- Serveur: localhost

-- Généré le : Jeudi 19 Octobre 2006 à 00:46

-- Version du serveur: 4.1.9

-- Version de PHP: 4.3.10

--

-- Base de données: `prv`

--

-- --------------------------------------------------------

--

-- Structure de la table `departements`

--

DROP TABLE IF EXISTS `departements`;

CREATE TABLE `departements` (

`Numero` int(2) NOT NULL default '0',

`Nom` varchar(30) NOT NULL default '',

PRIMARY KEY (`Numero`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;

--

-- Contenu de la table `departements`

--

INSERT INTO `departements` VALUES (1, 'AIN');

INSERT INTO `departements` VALUES (2, 'AISNE');

INSERT INTO `departements` VALUES (3, 'ALLIER');

avec "use MaBaseOVH;" au début et sans (comme c'est dit dans le tuto d'OVH...)

et l'utilisateur que j'utilise correspond à ce qui m'a été donné par OVH... avec le password et le host fournis à la même occasion...

Posté

oki, et quand tu fais un copier-coller de la requete sous phpmuadmin (la premiere par exemple, la création de la table départements), elle passe bien ? tu te fais pas jeter à cause des droits ?

Je connais pas OVH, donc pour ça je laisse Dan répondre ^^

Posté
Je connais pas OVH, donc pour ça je laisse Dan répondre ^^

Moi je connais OVH, mais surtout les serveurs dédiés. :lol:

J'attends toujours que Bourinho nous donne l'affichage généré par le die() ....

Posté

Merci à tous pour votre aide... (Ca va tellement vite que j'ai du mal à suivre ;) )

vec le fichier php suivant :

<?php
$fichiersql='prendrer007.sql';
$host='sql';
$user='prendrer007';
$password='***';
$labaseOVH='prendrer007';
echo "Votre base est en cours de restauration......<br>";
die('mysql --host='.$host.' --user='.$user.' --password='.$password.' '.$labaseOVH.' < ./'.$fichiersql.' >');
echo "<br>".$err;
echo "<br>C'est fini. Votre base est en place sur cet hébergement.";
?>

J'obtiens :

Votre base est en cours de restauration......

mysql --host=sql --user=prendrer007 --password=*** prendrer007 < ./prendrer007.sql >

Voilà...

Posté

Il vient de là :

essaie de faire

die("mysql --host=**host** --user=**user** --password=**pass** **LabaseOVH** < ./Labase2.sql > ");

et dis nous précisément ce que tu obtiens (en effaçant le mot de passe)

Il faut l'enlever??? :unsure:

Posté

Oui il vaudrait mieux... j'ai relu le topic, c'est de ma faute, c'est moi le premier à l'avoir mis, je ne sais pas pourquoi d'ailleurs... ????

Posté

Salut,

Quand j'enlève le '>' à la fin, je passe de

Votre base est en cours de restauration......

2

C'est fini. Votre base est en place sur cet hébergement.

à

Votre base est en cours de restauration......

1

C'est fini. Votre base est en place sur cet hébergement.

Il n'y a que le $err qui passe de 2 à 1...

Posté

Oui, je pense que c'est parce que la redirection vers "rien" (le '>' final) donnait un code de retour 2 , alors que ton script retourne un code 1...

Par contre j'arrive pas a trouver les codes de retour de la commande 'mysql'...

TU as essayé la requete dans phpmyadmin ?

Posté (modifié)

Salut,

Je pense qu'on est sur une piste...

Voilà ce que me retourne phpMyAdmin :

requête SQL:

CREATE TABLE `departements` (

`Numero` int( 2 ) NOT NULL default '0',

`Nom` varchar( 30 ) NOT NULL default '',

PRIMARY KEY ( `Numero` )

) ENGINE = MYISAM DEFAULT CHARSET = utf8 PACK_KEYS =0;

MySQL a répondu:Documentation

#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=utf8 PACK_KEYS=0' at line 5

avec le fichier suivant :

-- phpMyAdmin SQL Dump

-- version 2.6.1

-- http://www.phpmyadmin.net

--

-- Serveur: localhost

-- Généré le : Jeudi 19 Octobre 2006 à 00:46

-- Version du serveur: 4.1.9

-- Version de PHP: 4.3.10

--

-- Base de données: `prv`

--

-- --------------------------------------------------------

--

-- Structure de la table `departements`

--

DROP TABLE IF EXISTS `departements`;

CREATE TABLE `departements` (

`Numero` int(2) NOT NULL default '0',

`Nom` varchar(30) NOT NULL default '',

PRIMARY KEY (`Numero`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;

--

-- Contenu de la table `departements`

--

INSERT INTO `departements` VALUES (1, 'AIN');

INSERT INTO `departements` VALUES (2, 'AISNE');

INSERT INTO `departements` VALUES (3, 'ALLIER');

C'est peut être un soucis de compatibilité entre mon PhpMyAdmin (v. 2.6.1) et celui d'OVH (v. 2.8.2.4)...non?

Modifié par Bourinho
Posté (modifié)

C'est indiqué :

Version du client MySQL: 5.0.18

[Edit]

C'est aussi marqué :

MySQL - 4.0.25-standard-log
Modifié par Bourinho
Posté

Merci pour le lien, ça va certainement m'aider...

Le truc qu'est rigolo, c'est que je peux importer ma "petite" base lorsque j'enlève le 'DEFAULT' devant CHARSET... C'est vraiment bizarre!!!

Je vais étudier ton lien plus profondément pour m'en sortir plus proprement!

Merci encore!

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...