Pregunta

Tengo un archivo SqlDump.sql que funciona muy bien cuando se aplican mediante la función de importación de phpMyAdmin, sin embargo tengo que ser capaz de lograr esto mediante programación. Siendo un novato, he tratado de hacer algo como esto:

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

Pero consigo todo tipo de errores de MySQL. Sin embargo, el mismo archivo funciona bien cuando se importa utilizando phpMyAdmin. ¿Cómo consigo que funcione mediante programación?

Error:

Can't create table 'somedb.t_sr_u_alertcode' (errno: 150)
¿Fue útil?

Solución

Hay-doble problema.

Ese error es un error restricción de clave externa. Algunos tabla que está tratando de crear probablemente tiene una clave externa a otra tabla que aún no se ha creado.

He encontrado algunos casos de error aquí:

por google esto:

El segundo problema es que es probable que se meten en problemas al intentar importar un archivo grande, porque no creo que se pueda ejecutar múltiples comandos SQL separadas con una; como se hace en phpmyadmin. Me gustaría sugerir el uso de un script como el siguiente:

No he probado a mí mismo, pero no tengo ninguna razón para creer que no funciona.

Otros consejos

siempre se puede simplemente vistazo al código fuente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top