Domanda

Ho un file SqlDump.sql che funziona bene quando applico utilizzando la funzione di importazione di phpMyAdmin, però ho bisogno di essere in grado di raggiungere questo livello di programmazione. Essendo un noob, ho provato a fare qualcosa di simile:

$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);

Ma io ottenere tutti i tipi di errori mysql. Eppure, lo stesso file funziona bene quando ho importare utilizzando phpMyAdmin. Come faccio ad avere questo lavoro di programmazione?

Errore:

Can't create table 'somedb.t_sr_u_alertcode' (errno: 150)
È stato utile?

Soluzione

Hai doppio problemi.

Questo errore è un errore di vincolo di chiave esterna. Alcuni tavolo si sta cercando di creare, probabilmente ha una chiave esterna a un'altra tabella che non è ancora stato creato.

Ho trovato alcuni casi dell'errore qui:

googling questo:

Il secondo problema è che probabilmente otterrete nei guai cercando di importare un file di grandi dimensioni, perché non credo che si può eseguire più comandi SQL separati con una; come si può in phpMyAdmin. Io suggerirei di utilizzare uno script come questo:

Non ho provato io stesso, ma non ho motivo di credere che non funziona.

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top