Deshabilitar comprobación de restricciones en MySQL al cargar un dump
Si usáis InnoDB en vuestras bases de datos MySQL tendréis la suerte de disfrutar de una base de datos moderna ACID, que tiene entre otras cosas, claves foráneas y podéis hacer que haya restricciones sobre ellas, las famosas constraints.
Un problema de tener restricciones en una base de datos, es que cuando tienes que recuperarla de urgencia con una copia, que solemos realizar con un dump, existen problemas porque el orden en el que el dump crea la base de datos NO respeta las estructuras de estas restricciones.
¿Qué obtenemos? Mensajes de este tipo en MySQL:
Can't create table './xxxxxxxx/mitabla.frm' (errno: 121)
¿Cómo resolverlo? Añadiendo al comienzo y al final del dump dos líneas:
SET FOREIGN_KEY_CHECKS = 0; /* contenido del dump */ SET FOREIGN_KEY_CHEKS = 1;
Con eso nos olvidaremos de este problema.