martes, 19 de junio de 2007

Problema al restaurar un backup en mysql relacionado con las claves ajenas

Al restaurar un backup en mysql tenemos que las tablas se crean y se intentan crear también las relaciones. Así que nos da problemas por que para crear bien las relaciones estas han de crearse de forma ordenada (cuando utilizamos tablas InnoDb), cosa que el script generado por mysqldump no hace.

Para solucionar esto tenemos que desactivar la comprobación de las claves ajenas:
SET FOREIGN_KEY_CHECKS=0;

Y despues de restaurar la base de datos con éxito lo volvemos a activar:
SET FOREIGN_KEY_CHECKS=1;

Pero estas instrucciones hemos de realizarlas desde la linea de comandos de mysql.

Veamos un ejemplo de restauración de base de datos (suponiendo que ya tenemo la base de datos creada):

mysql> use nombre_bd
Database changed
mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.00 sec)
mysql> source script_con_el_backup_de_la_bd.sql
(esto tardará un rato dependiendo del tamaño de la base de datos)
mysql> SET FOREIGN_KEY_CHECKS = 1;
Query OK, 0 rows affected (0.00 sec)

Y despues de esto ya tenemo la base de datos restaurada y activada la comprobación de las claves ajenas.

http://dev.mysql.com/doc/refman/5.0/es/innodb-foreign-key-constraints.html
Publicar un comentario