Équivalent Programmatic d'importation dans phpMyAdmin
-
23-09-2019 - |
Question
J'ai un fichier SqlDump.sql qui fonctionne très bien quand je l'applique en utilisant la fonction d'importation de phpMyAdmin, mais je dois être en mesure d'accomplir ce programme. Être un noob, j'ai essayé de faire quelque chose comme ceci:
$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 je reçois toutes sortes d'erreurs de MySQL. Pourtant, le même fichier fonctionne très bien quand je l'importer en utilisant phpMyAdmin. Comment puis-je obtenir ce travail programme?
Erreur:
Can't create table 'somedb.t_sr_u_alertcode' (errno: 150)
La solution
Vous avez deux problèmes.
Cette erreur est une erreur de contrainte de clé étrangère. Certaines table que vous essayez de créer a probablement une clé étrangère à une autre table qui n'a pas encore été créé.
J'ai trouvé quelques exemples de l'erreur ici:
par googling ceci:
- http://www.google.is/search?hl=en&q=Can 't + créer + tableau ++ (errno: +150)
Le deuxième problème est que vous aurez probablement des difficultés à essayer d'importer un fichier volumineux parce que je ne pense pas que vous pouvez exécuter plusieurs commandes SQL avec un seperated; 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.
Autres conseils
Vous pourriez toujours juste regarder le code source