Estoy tratando de eliminar todas las tablas de una base de datos, excepto una, y termino teniendo el siguiente error:
No se puede eliminar o actualizar una fila principal: falla una restricción de clave externa
Por supuesto, podría probar y error para ver cuáles son esas restricciones clave y, finalmente, eliminar todas las tablas, pero me gustaría saber si hay una manera rápida de forzar la eliminación de todas las tablas (ya que podré volver a insertar aquellas no quiero eliminar)
Google me apuntó a algún sitio que sugirió el siguiente método:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
La respuesta corta es que realmente no funcionó, ya que terminé recibiendo el mismo error mientras podía eliminar algunas tablas más. He visto en Stack Overflow formas de vincular todas las claves externas a una determinada tabla, pero eso lleva demasiado tiempo a menos que lo escriba todo (lo que es factible en el caso de que no haya otra opción)
La base de datos es 4.1, así que no puedo usar DROP DATABASE
Ideas?
fuente
Respuestas:
Como no está interesado en conservar ningún dato, descarte toda la base de datos y cree una nueva.
fuente
Esto podría ser útil para alguien que termina aquí desde una búsqueda. Asegúrate de que estás intentando soltar una tabla y no una vista .
SET foreign_key_checks = 0
consiste en desactivar las comprobaciones de clave externa y luego volver a activarSET foreign_key_checks = 1
las comprobaciones de clave externa. Mientras las comprobaciones están apagadas, las tablas se pueden descartar, las comprobaciones se vuelven a activar para mantener la integridad de la estructura de la tabla.fuente
Si está utilizando phpmyadmin , esta función ya está allí.
fuente
Puede usar los siguientes pasos, funcionó para mí soltar la tabla con restricciones, la solución ya se explicó en el comentario anterior, acabo de agregar una captura de pantalla para eso:
fuente
La base de datos de eliminación existe en todas las versiones de MySQL. Pero si quieres mantener la estructura de la tabla, aquí hay una idea
mysqldump --no-data --add-drop-database --add-drop-table -hHOSTNAME -uUSERNAME -p> dump.sql
Este es un programa, no un comando mysql
Luego, inicie sesión en mysql y
fuente dump.sql;
fuente
Solución simple para soltar toda la tabla a la vez desde la terminal.
Esto implicó algunos pasos dentro de su shell mysql (aunque no es una solución de un solo paso), esto me funcionó y me salvó el día.
Funcionó para la versión del servidor: 5.6.38 MySQL Community Server (GPL)
Pasos que seguí:
MySQL shell
fuente