Aller au contenu

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


Bourinho

Sujets conseillés

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
Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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**");

Lien vers le commentaire
Partager sur d’autres sites

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!

Lien vers le commentaire
Partager sur d’autres sites

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 ('<')

Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 ('<')

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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 ^^

Lien vers le commentaire
Partager sur d’autres sites

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() ....

Lien vers le commentaire
Partager sur d’autres sites

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à...

Lien vers le commentaire
Partager sur d’autres sites

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:

Lien vers le commentaire
Partager sur d’autres sites

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... ????

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

D'apres la doc de mysql, ça sert à déterminer quel comportement doit être utilisé pour compresser les différents types de clés...

http://dev.mysql.com/doc/refman/5.0/fr/create-table.html

Quelle est la version du serveur mysql chez OVH ?

Lien vers le commentaire
Partager sur d’autres sites

C'est indiqué :

Version du client MySQL: 5.0.18

[Edit]

C'est aussi marqué :

MySQL - 4.0.25-standard-log
Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

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!

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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