Erreur import base sql

Nouveau WRInaute
Bonjour,

Je tente d'importer une base sauvegarde .sql via phpmyadmin (fichier "parcourir" et sélection sur mon PC)... sans succès !
A chaque fois, perte connexion sql ou alors il m'ouvre un fichier .php (dumb ?) en me demandant s'il faut l'ouvrir ou l'enregistrer...

J'ai l'impression que sous FREE l'import d'une base même de quelques Mo pose problème.

Savez vous s'il existe un logiciel gratuit pour importer une base sql ?
Le cas échéant autre manipe ? Par exemple mettre ma base .sql à la racine de mon site, ce serait mieux pour le téléchargement ? Si oui, quelle ligne de commande ?

Merci d'avance pour vos conseils, car je bloques depuis quelques heures...

Jérôme
 
WRInaute accro
un upload en html est limité à 2 Mo, donc un plus gros fichier doit être zippé. Le mieux en tar.gz mais après même si le zip n'est pas trop gors, il risque de dépasser le timeout de phpmyadmin :cry:
 
Nouveau WRInaute
Bon je vais tenter le ZIP.
Mais c'est curieux car sur phpmyadmin, il est marqué 10 Mo max...

Sinon, il n'y a pas d'autres solutions comme celles précisées dans mon post ci-dessus pour réussir l'upload ?

Merci pour la réponse.

Jérôme
 
WRInaute passionné
jhautier a dit:
Bonjour,

Je tente d'importer une base sauvegarde .sql via phpmyadmin (fichier "parcourir" et sélection sur mon PC)... sans succès !
A chaque fois, perte connexion sql ou alors il m'ouvre un fichier .php (dumb ?) en me demandant s'il faut l'ouvrir ou l'enregistrer...

J'ai l'impression que sous FREE l'import d'une base même de quelques Mo pose problème.

Savez vous s'il existe un logiciel gratuit pour importer une base sql ?
Le cas échéant autre manipe ? Par exemple mettre ma base .sql à la racine de mon site, ce serait mieux pour le téléchargement ? Si oui, quelle ligne de commande ?

Merci d'avance pour vos conseils, car je bloques depuis quelques heures...

Jérôme
regarde s'il n'y a pas une ligne qui indique le charset et tout à la fin des create database et tout. Parfois l'incompatibilité de charset crée ce genre de pb.

ENGINE=MyISAM DEFAULT CHARSET=latin1 [...]
essaie de virer ce genre de ligne et retenter l'import..
 
WRInaute occasionnel
le mieux serait surement de créer un script en PHP qui injecte ta base de donnée en sql. Effectivement une base de plusieurs megas ne peut pas etre importée aussi facilement via phpmyadmin. Le seul moyen serait d'avoir acces au Shell en ligne de commande et d'injecter la base de cette facon la.

Cherche un peu dans les open source, tu trouveras surement un script en php pour injecter des requettes dans la base.
 
WRInaute passionné
Kaliiii a dit:
le mieux serait surement de créer un script en PHP qui injecte ta base de donnée en sql. Effectivement une base de plusieurs megas ne peut pas etre importée aussi facilement via phpmyadmin. Le seul moyen serait d'avoir acces au Shell en ligne de commande et d'injecter la base de cette facon la.

Cherche un peu dans les open source, tu trouveras surement un script en php pour injecter des requettes dans la base.

Perso je l'ai déjà fait, mais j'ai été obligé de rallonger le max execution time pour ce script là.

Le mieux est de passer par un fichier .sql de toutes façons puisque le travail se fait en interne sur le serveur une fois le fichier importé.
 
WRInaute accro
Voila ce que j'utilise et qui me permet d'insérer plusieurs dizaines de Mo très rapidement
Code:
<?php session_start();
set_time_limit(60000); //fixe un délai maximum d'exécution de 600 secondes soit 10 minutes.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">

</head><body>
<h1>Insertion de données dans la BdD</h1>
<?php 
  error_reporting(E_ALL);
/* ***********************************
ici mettre la connection à la bdd
************************************ */
$nb_erreurs=0;
$fichierResult="*******chemin accès fichier sql************";
  $contenuResult=file($fichierResult);
  $nlignesResult=count($contenuResult);
echo "<p>$nlignesResult enregistrements à importer</p>\n";
  for($compt=0;$compt<$nlignesResult;$compt++)
  {if (trim($contenuResult[$compt])!="")  
    if (!mysql_query($contenuResult[$compt]))
          { echo "<p>$compt) la requête ".$contenuResult[$compt]." n'a pas abouti<br />erreur : ".mysql_error()."</p>";
            $nb_erreurs++;
          }
  }
if ($nb_erreurs>0) echo "<p>$nb_erreurs erreurs rencontrées durant l'import</p>\n";
?>
</body>
</html>
Attention, il faut qu'une instruction ne tienne que sur une ligne.
 
Nouveau WRInaute
RomsIW a dit:
jhautier a dit:
Bonjour,

Je tente d'importer une base sauvegarde .sql via phpmyadmin (fichier "parcourir" et sélection sur mon PC)... sans succès !
A chaque fois, perte connexion sql ou alors il m'ouvre un fichier .php (dumb ?) en me demandant s'il faut l'ouvrir ou l'enregistrer...

J'ai l'impression que sous FREE l'import d'une base même de quelques Mo pose problème.

Savez vous s'il existe un logiciel gratuit pour importer une base sql ?
Le cas échéant autre manipe ? Par exemple mettre ma base .sql à la racine de mon site, ce serait mieux pour le téléchargement ? Si oui, quelle ligne de commande ?

Merci d'avance pour vos conseils, car je bloques depuis quelques heures...

Jérôme
regarde s'il n'y a pas une ligne qui indique le charset et tout à la fin des create database et tout. Parfois l'incompatibilité de charset crée ce genre de pb.

ENGINE=MyISAM DEFAULT CHARSET=latin1 [...]
essaie de virer ce genre de ligne et retenter l'import..

Bon, à chaque fin de table (bloc dans mon fichier .sql), les dernières lignes sont généralement du type:
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Vu que mon fichier fait plus de 60 Mo, ça me surprend de devoir virer chaque ligne qui est sur chaque table ?? Non ??? :eek:

Sinon, j'en profite: ton site 4000M.com est sympa. Je suis aussi parachutiste (1300 sauts)... :p

Bon je vais répondre aux autres réponses. A +

Jérôme
 
Nouveau WRInaute
RomsIW a dit:
Kaliiii a dit:
le mieux serait surement de créer un script en PHP qui injecte ta base de donnée en sql. Effectivement une base de plusieurs megas ne peut pas etre importée aussi facilement via phpmyadmin. Le seul moyen serait d'avoir acces au Shell en ligne de commande et d'injecter la base de cette facon la.

Cherche un peu dans les open source, tu trouveras surement un script en php pour injecter des requettes dans la base.

Perso je l'ai déjà fait, mais j'ai été obligé de rallonger le max execution time pour ce script là.

Le mieux est de passer par un fichier .sql de toutes façons puisque le travail se fait en interne sur le serveur une fois le fichier importé.

Côté script, je veux bien regarder mais je ne maîtrise pas du tout...

Jerome
 
Nouveau WRInaute
Leonick a dit:
Voila ce que j'utilise et qui me permet d'insérer plusieurs dizaines de Mo très rapidement
Code:
<?php session_start();
set_time_limit(60000); //fixe un délai maximum d'exécution de 600 secondes soit 10 minutes.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">

</head><body>
<h1>Insertion de données dans la BdD</h1>
<?php 
  error_reporting(E_ALL);
/* ***********************************
ici mettre la connection à la bdd
************************************ */
$nb_erreurs=0;
$fichierResult="*******chemin accès fichier sql************";
  $contenuResult=file($fichierResult);
  $nlignesResult=count($contenuResult);
echo "<p>$nlignesResult enregistrements à importer</p>\n";
  for($compt=0;$compt<$nlignesResult;$compt++)
  {if (trim($contenuResult[$compt])!="")  
    if (!mysql_query($contenuResult[$compt]))
          { echo "<p>$compt) la requête ".$contenuResult[$compt]." n'a pas abouti<br />erreur : ".mysql_error()."</p>";
            $nb_erreurs++;
          }
  }
if ($nb_erreurs>0) echo "<p>$nb_erreurs erreurs rencontrées durant l'import</p>\n";
?>
</body>
</html>
Attention, il faut qu'une instruction ne tienne que sur une ligne.

Merci Léonick pour la requête.

Je viens de la tester en la copiant/collant dans phpmyadmin et en remplacant simplement "ici mettre la connection à la bdd" par le chemin de ma base sur mon PC: c:...

Mais ça plante...

Y a t-il d'autres variables à changer ?
Et qu'entends tu pas "instruction sur une seule ligne" ?

Jérôme
 
WRInaute passionné
jhautier a dit:
RomsIW a dit:
Kaliiii a dit:
le mieux serait surement de créer un script en PHP qui injecte ta base de donnée en sql. Effectivement une base de plusieurs megas ne peut pas etre importée aussi facilement via phpmyadmin. Le seul moyen serait d'avoir acces au Shell en ligne de commande et d'injecter la base de cette facon la.

Cherche un peu dans les open source, tu trouveras surement un script en php pour injecter des requettes dans la base.

Perso je l'ai déjà fait, mais j'ai été obligé de rallonger le max execution time pour ce script là.

Le mieux est de passer par un fichier .sql de toutes façons puisque le travail se fait en interne sur le serveur une fois le fichier importé.

Côté script, je veux bien regarder mais je ne maîtrise pas du tout...

Jerome

A la rigueur, essaie de remplacer "ENGINE=MyISAM DEFAULT CHARSET=latin1; " par "" dans tout le fichier

Cool un para :) bé tu connais ptet Jacques le gérant de la boite (tu peux le voir sur la rubrique photos / vidéos du site ;)
 
Nouveau WRInaute
[/quote]

A la rigueur, essaie de remplacer "ENGINE=MyISAM DEFAULT CHARSET=latin1; " par "" dans tout le fichier

Cool un para :) bé tu connais ptet Jacques le gérant de la boite (tu peux le voir sur la rubrique photos / vidéos du site ;)[/quote]

Ok, mais j'ai parfois des lignes du type:
) ENGINE=MyISAM AUTO_INCREMENT=2635 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2635 ;
ou encore:
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

Est-ce grave docteur ???

PS: jacques comment ? Il saute où ?
 
WRInaute accro
jhautier a dit:
Y a t-il d'autres variables à changer ?
Et qu'entends tu pas "instruction sur une seule ligne" ?
C'est à dire en enlevant toutes les instruction de création de table, qui tiennent sur plusieurs lignes. Toutes les créations de tables peuvent être effectuées séparément dans phpmyadmin (et donc en corrigeant le problème de ENGINE=MyISAM DEFAULT CHARSET=latin1; qui vient de mysql5 et qui ne passe pas en mysql 4.x), ce script servant à insérer des données
Sur une ligne veut dire que
Code:
insert nom='toto', age='10';
et pas
Sur une ligne veut dire que
Code:
insert nom='toto',
 age='10';
 
WRInaute passionné

A la rigueur, essaie de remplacer "ENGINE=MyISAM DEFAULT CHARSET=latin1; " par "" dans tout le fichier

Cool un para :) bé tu connais ptet Jacques le gérant de la boite (tu peux le voir sur la rubrique photos / vidéos du site ;)[/quote]

Ok, mais j'ai parfois des lignes du type:
) ENGINE=MyISAM AUTO_INCREMENT=2635 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2635 ;
ou encore:
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

Est-ce grave docteur ???

PS: jacques comment ? Il saute où ?[/quote]

Jacques Marsily, il sautait un peu partout en freefly (compet)

Ben ya l'auto increment dedans donc faut faire de "rechercher / remplacer"

1. ENGINE=MyISAM par vide
2. DEFAULT CHARSET=latin1 par vide
 
Nouveau WRInaute
Bonjour,

Alors la je ne comprends plus...
J'ai ben effectué la manipe:
1. ENGINE=MyISAM par vide
2. DEFAULT CHARSET=latin1 par vide

Et quand j'importe une partie seulement de la base (pour test) en fichier ZIP pour réduire la taille, j'ai le message erreur suivant:

Il semble que vous ayiez trouvé une anomalie dans l'analyseur syntaxique SQL. Veuillez examiner votre requête attentivement, et vérifier que vos apostrophes sont conformes. Il se pourrait aussi que vous ayiez chargé un fichier dont le contenu binaire n'est pas entre apostrophes. Si vous avez accès à MySQL via son interface de commande en mode ligne, vous pouvez y essayer votre requête. Le message d'erreur présenté plus bas pourrait vous indiquer la source du problème. En dernier recours, veuillez trouver la plus courte requête possible qui cause le problème, et soumettre un rapport d'anomalie en incluant la section à couper:
----Début de la section à couper----
eNoBUwKs/UVSUk9SOiBDMSBDMiBMRU46IDIgMyAyMTEKU1RSOiADCgpDVlM6ICRJZDogc3FscGFy
c2VyLmxpYi5waHAsdiAyLjM0LjIuMSAyMDA1LzA2LzMwIDE2OjU4OjExIGxlbTkgRXhwICQKTXlT
UUw6IDUuMC4yNS1uaWdodGx5LTIwMDYwODIzClVTUiBPUywgQUdFTlQsIFZFUjogV2luIE1PWklM
TEEgNS4wClBNQTogMi42LjMtcGwxClBIUCBWRVIsT1M6IDQuNC40IExpbnV4CkxBTkc6IGZyLXV0
Zi04ClNRTDogUEsDBBQAAgAIAKCFeDX5YVyp0egWAL5sXgASAAAAcGFyYWRpc2VfMVRFU1Quc3Fs
zJ3fkts2lsbv8xS6s13V8fA/qUztRSZhbXA769pNreNkEmem5qoKkZCENEnQBKlu5Wn2Ns+RF1v8
IUWpLR6qt2prv1Rsd6tb4u+AIL4D8PDD11+vmn3zw/HbohL16pe/v1/9e181X3399erAWyVkvQre
JmFtcDtvo6+bMjIv7ruu+eYvf3l8fHyr31YdmXnb25p35ofmzy+8PfC+/Wblr8O3QfzWX6dv48T8
5D/+/KP+84/2zz9WJV99s/oHr4uWF2IVRKsP8sCrTctXgeclqz//e+VH30SBedM/BoiiX6nxk6O3
/tvAv/gpX/30nz+Zn0RvvZHkb0xx85NC1vq4XH2z+tSwlhVC8Xv/k/0t89fX/8v/vjpF3LV93vWt
PVjJVh3b6AA/sSZsdDvnSgrH+e7nd99+fLf6+O3f3r/MXAQN
----Fin de la section à couper----
----Début des informations sur l'anomalie----

ERROR: C1 C2 LEN: 2 3 211
STR: 

CVS: $Id: sqlparser.lib.php,v 2.34.2.1 2005/06/30 16:58:11 lem9 Exp $
MySQL: 5.0.25-nightly-20060823
USR OS, AGENT, VER: Win MOZILLA 5.0
PMA: 2.6.3-pl1
PHP VER,OS: 4.4.4 Linux
LANG: fr-utf-8
SQL: PK


De toute façon en tentant d'importer la totalité de la base, j'ai une erreur perte de connexion.

Précision peut être importante: La base provient d'un hébergement payant (celeonet) et je souhaite la migrer vers un site sous free.fr pour test.
J'ai coché à chaque fois les options conseillées suivantes dans phpmyadmin: "Inclure des énoncés "DROP TABLE"" et "insertion complètes"

Si vous avez une piste sur mon problème...

A +

Jérôme
 
WRInaute accro
jhautier a dit:
La base provient d'un hébergement payant (celeonet) et je souhaite la migrer vers un site sous free.fr pour test.
Non, c'est qu'elle vient d'une version 5 et va vers une version 4.x ?
Sinon, essaye juste le drop table et la recréation de la table pour voir si ça passe. C'est fort probable que non. Car mysql 5 ne rajoute pas que ENGINE=MyISAM, mais aussi des collate latin1_general_ci et tout ça, il faut le supprimer pour pouvoir recopier la base en mysql 4 :wink:
 
WRInaute passionné
en cas de grosses difficultés je fais appel à ms access

jusqu'à present ça a toujours fonctionné

rog
 
Discussions similaires
Haut