Fehler bei gefälschter Fremdschlüsseleinschränkung
Beim Versuch, eine Tabelle mit dem Namen „Area“ aus einer Datenbank zu löschen, wurde eine Fehlermeldung angezeigt, die auf einen Fremdschlüssel hinweist Einschränkungsfehler. Obwohl alle anderen Tabellen gelöscht wurden, die Fremdschlüsselbeziehungen zum Bereich hatten, blieb die Einschränkung weiterhin bestehen.
Mögliche Gründe
InnoDB, die von der Datenbank verwendete Speicher-Engine, Normalerweise ist es nicht möglich, dass Fremdschlüssel auf Tabellen außerhalb des aktuellen Schemas verweisen. Daher war es rätselhaft, warum Fremdschlüsseleinschränkungen immer noch das Löschen der Bereichstabelle verhinderten.
Lösung
Bei weiteren Untersuchungen wurde festgestellt, dass bestimmte Datenbanktools, B. MySQL Query Browser oder phpMyAdmin, öffnen Sie für jede Abfrage eine neue Verbindung. Dieses Verhalten verhindert die Weitergabe von Änderungen über mehrere Abfragen hinweg. Um das Problem zu beheben, müssen alle Drop-Anweisungen innerhalb einer einzigen Abfrage ausgeführt werden:
SET FOREIGN_KEY_CHECKS=0; -- Disable foreign key checks DROP TABLE my_first_table_to_drop; DROP TABLE my_second_table_to_drop; SET FOREIGN_KEY_CHECKS=1; -- Re-enable foreign key checks
Das Deaktivieren von Fremdschlüsselprüfungen ermöglicht das Löschen von Tabellen, die an Fremdschlüsselbeziehungen beteiligt sind, ohne den Einschränkungsfehler auszulösen. Die anschließende erneute Aktivierung der Fremdschlüsselprüfungen gewährleistet die Integrität der Datenbank für zukünftige Vorgänge.
Das obige ist der detaillierte Inhalt vonWarum kann ich eine Tabelle mit Fremdschlüsseleinschränkungen nicht mithilfe mehrerer Abfragen löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!