Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Tabelle kann nicht gelöscht werden:Eine Fremdschlüsseleinschränkung schlägt fehl

Das sollte funktionieren:

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

Wie andere betonen, ist dies fast nie das, was Sie wollen, obwohl es das ist, was in der Frage gefragt wird. Eine sicherere Lösung ist es, die Tabellen abhängig von bericht zu löschen vor dem Löschen von bericht . Siehe CloudyMarble-Antwort, wie das geht. Ich verwende bash und die Methode in meinem Beitrag, um alle Tabellen in einer Datenbank zu löschen, wenn ich die Datenbank selbst nicht löschen oder neu erstellen möchte oder kann.

Der #1217 Fehler tritt auf, wenn andere Tabellen Fremdschlüsseleinschränkungen für die Tabelle haben, die Sie löschen möchten, und Sie die InnoDB-Datenbank-Engine verwenden. Diese Lösung deaktiviert vorübergehend die Überprüfung der Beschränkungen und aktiviert sie dann wieder. Lesen Sie die Dokumentation für mehr. Achten Sie darauf, Fremdschlüsselbeschränkungen und Felder in Tabellen abhängig von bericht zu löschen , andernfalls hinterlassen Sie Ihre Datenbank möglicherweise in einem beschädigten Zustand.