Contexto: Base de datos MySQL InnoDB.
Significado: Error al querer borrar una tabla que existe una foreign key que lo referencia.
Situación: En ocasiones deseamos modificar/eliminar unos registros/tabla y no podemos porque nos dice que existe otro registro que lo enlaza. En palabras más técnicas: SQL Error (1701): Cannot truncate a table referenced in a foreign key constraint
Solución: Eliminamos todos los registros en el orden de las tablas correcto (primero las hojas y por último la raiz) o atajamos desactivando el control de foreign keys.
Aquí muestro la segunda opción. Pon a 0 (inhabilita) y a 1 (habilita) entre el código de MySQL el siguiente flag:
SET FOREIGN_KEY_CHECKS = 0; [mi codigo] SET FOREIGN_KEY_CHECKS = 1;
Aunque no es muy recomendable utilizar estos flags, me han sido de utilidad en numerosas ocasiones. Siempre hay que utilizarlos con cabeza y no abusar de ellos.
Ahora ya puedes borrar las tablas a cascoporro.
Comparte, comenta y colabora. Juntos haremos un mundo mejor.
Hola! De hecho en las ultimas versiones de MySql (bueno a mí me ha pasado en la 5.5.35 ) me ha pasado que la única opción viable es la segunda, es decir, la que tú pones aquí, porque ni haciéndolo en el orden correcto te lo permite. (Por si a alguien le pasa y lee esto)
confirmo tu comentario compañero, la verdad me dio lata muchos dias, pero con tu comentario y buscando en internet confirmo mis sospechas, no trabaja igual truncate en mysql 5.5.35 como en versiones anteriores. gracias.
Gracias por tu comentario y tu aportación!!! Un saludo!!