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)
War es hilfreich?

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:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top