Programmatische Äquivalent Import in phpMyAdmin
-
23-09-2019 - |
Frage
Ich habe eine SqlDump.sql-Datei, die ganz gut funktioniert, wenn ich es gelten die Importfunktion von phpMyAdmin verwenden, jedoch muss ich der Lage sein, dies programmatisch zu erreichen. Als ein noob, habe ich versucht, so etwas zu tun:
$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);
Aber ich alle Arten von MySQL Fehler bekommen. Doch die gleiche Datei funktioniert gut, wenn ich es mit phpMyAdmin importieren. Wie bekomme ich diese programmatisch zu arbeiten?
Fehler:
Can't create table 'somedb.t_sr_u_alertcode' (errno: 150)
Lösung
Sie haben doppelt Ärger.
Dieser Fehler ist ein Fremdschlüssel Fehler. Einige Tabelle Sie versuchen, wahrscheinlich zu erstellen hat einen Fremdschlüssel zu einer anderen Tabelle, die noch nicht erstellt worden ist.
Ich fand einige Instanzen des Fehlers hier:
durch diese googeln:
- http://www.google.is/search?hl=en&q=Can 't + + Tabelle ++ (errno: +150) erstellen
Zweites Problem ist, dass Sie wahrscheinlich in Schwierigkeiten geraten würden versuchen, eine große Datei zu importieren, weil ich nicht glaube, Sie mehr SQL-Befehle getrennt mit einem ausführen können; wie Sie in phpMyAdmin können. Ich würde vorschlagen, ein Skript wie diese verwenden:
Ich habe es selbst nicht ausprobiert, aber ich habe keinen Grund zu glauben, dass es nicht funktioniert.
Andere Tipps
Sie können immer nur Blick auf den Quellcode