2010-04-01 4 views
2

J'ai un fichier SqlDump.sql qui fonctionne très bien lorsque je l'applique en utilisant la fonction d'importation de phpMyAdmin, mais je dois pouvoir le faire par programmation. Étant un noob, j'ai essayé de faire quelque chose comme ceci:Equivalent programmatique de l'importation dans phpMyAdmin

$SQL=file_get_contents('SqlDump.sql'); 
$DB=mysqli_connect('localhost','root',''); 
mysqli_select_db($DB,'somedb'); 
if (mysqli_multi_query($DB, $SQL)) { 
    do { 
     if ($result = mysqli_store_result($DB)) { 
      mysqli_free_result($result); 
     } 
    } while (mysqli_next_result($DB)); 
} 
$Err=mysqli_error($DB); 
mysqli_close($DB); 

Mais j'obtiens toutes sortes d'erreurs mysql. Pourtant, le même fichier fonctionne très bien lorsque je l'importe en utilisant phpMyAdmin. Comment puis-je faire fonctionner cela par programme?

Erreur:

Can't create table 'somedb.t_sr_u_alertcode' (errno: 150) 
+0

Peut-être dupliquer: http://stackoverflow.com/questions/147821/loading-sql-files-from-within-php –

Répondre

0

Vous avez double problème.

Cette erreur est une erreur de contrainte de clé étrangère. Une table que vous essayez de créer a probablement une clé étrangère dans une autre table qui n'a pas encore été créée.

J'ai trouvé quelques exemples de l'erreur ici:

par googling ceci:

Le deuxième problème est que vous aurez probablement des ennuis en essayant d'importer un gros fichier parce que je ne pense pas que vous pouvez exécuter plusieurs commandes sql séparées par un; comme vous pouvez dans phpmyadmin. Je suggère d'utiliser un script comme celui-ci:

Je n'ai pas essayé moi-même, mais je n'ai aucune raison de croire qu'il ne fonctionne pas.

+1

phpMyAdmin peut désactiver les contraintes de clé étrangère pendant le processus de chargement – SorcyCat