mysql - guia - qgis manual
Force drop mysql pasando por alto la restricción de clave externa (5)
Como no está interesado en guardar ningún dato, elimine toda la base de datos y cree una nueva.
Estoy intentando 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 primaria: falla una restricción de clave externa
Por supuesto, pude probar y error para ver cuáles son esas limitaciones clave y, finalmente, eliminar todas las tablas, pero me gustaría saber si hay una forma rápida de forzar la eliminación de todas las tablas (ya que seré capaz de volver a insertar las que no quiero borrar).
Google me dirigió 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 solucionó el problema ya que terminé recibiendo el mismo error mientras que pude eliminar algunas tablas más. He visto en Stack Overflow formas de obtener todas las claves externas vinculadas a una cierta tabla, pero eso lleva demasiado tiempo, a menos que lo script 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?
Drop database 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
source dump.sql;
Esto podría ser útil para alguien que termina aquí desde una búsqueda. Asegúrate de intentar colocar una tabla y no una vista .
SET foreign_key_checks = 0; -- Drop tables drop table ... -- Drop views drop view ... SET foreign_key_checks = 1;
SET foreign_key_checks = 0
es para desactivar las comprobaciones de clave foránea y luego SET foreign_key_checks = 1
para volver a establecer las comprobaciones de clave foránea. Mientras que las verificaciones están desactivadas, las tablas se pueden descartar, luego se vuelven a activar para mantener la integridad de la estructura de la tabla.
Puedes usar los siguientes pasos, me funcionó para soltar la tabla con la restricción, la solución ya explicada en el comentario anterior, acabo de agregar una captura de pantalla para eso -
Si está usando phpmyadmin , esta característica ya está allí.
- Seleccione las tablas que desea soltar
- En el menú desplegable en la parte inferior de la lista de tablas, selecciona drop
- Se abrirá una nueva página con la casilla de verificación en la parte inferior que dice "verificación de clave externa", desmarquela.
- Confirme la eliminación aceptando "sí".