válida una tipos tablas tabla restricción restricciones relacionar referencial referencia quitar puede por objeto llave integridad hay hace foreign foranea externa datos compuesta codigo clave mysql sql drop-table

mysql - tipos - No se puede eliminar la tabla: falla una restricción de clave externa



relacionar tablas en sql server por codigo (5)

En MySQL quiero dejar caer una tabla.
Intenté muchas cosas, pero sigo recibiendo el error de que la tabla llamada bericht no se puede descartar. Este es el error que estoy recibiendo:

# 1217 - No se puede eliminar o actualizar una fila primaria: falla una restricción de clave externa

¿Cómo dejo caer esta mesa?


Esto debería funcionar:

SET FOREIGN_KEY_CHECKS=0; DROP TABLE bericht; SET FOREIGN_KEY_CHECKS=1;

Como otros señalan, esto casi nunca es lo que quieres, aunque es lo que se pregunta en la pregunta. Una solución más segura es eliminar las tablas en función de bericht antes de eliminar bericht . Vea la respuesta de CloudyMarble sobre cómo hacer eso. Utilizo bash y el método en mi publicación para colocar todas las tablas en una base de datos cuando no quiero o no puedo eliminar y volver a crear la base de datos.

El error #1217 ocurre cuando otras tablas tienen restricciones de clave externa en la tabla que está intentando eliminar y está usando el motor de la base de datos InnoDB. Esta solución desactiva temporalmente el control de las restricciones y luego las vuelve a habilitar. Lea la documentation para más. Asegúrese de eliminar las restricciones de claves externas y los campos en tablas según bericht ; de lo contrario, podría dejar su base de datos en un estado dañado.


Esto probablemente tiene la misma tabla para otro esquema, la razón por la que está obteniendo ese error.

Debe colocar primero la fila secundaria luego la fila primaria.


Me doy cuenta de que esto es obsoleto por un tiempo y que se había seleccionado una respuesta, pero qué tal la alternativa para permitir que la clave foránea sea NULL y luego elegir ON DELETE SET NULL .

Básicamente, tu tabla debe cambiarse así:

ALTER TABLE ''bericht'' DROP FOREIGN KEY ''your_foreign_key'';

ALTER TABLE ''bericht'' ADD CONSTRAINT ''your_foreign_key'' FOREIGN KEY (''column_foreign_key'') REFERENCES ''other_table'' (''column_parent_key'') ON UPDATE CASCADE ON DELETE SET NULL;

Personalmente, recomendaría utilizar "ON UPDATE CASCADE" y "ON DELETE SET NULL" para evitar complicaciones innecesarias, sin embargo, su configuración puede dictar un enfoque diferente.

Espero que esto ayude.


Prueba esto:

SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = ''YourTable'';

Esto debería proporcionarle las Tablas que tienen referencias a la tabla que desea descartar, una vez que suelte estas referencias, o los conjuntos de datos que hacen referencia a los conjuntos de datos en esta tabla, podrá abandonar la tabla.