Heim > Datenbank > MySQL-Tutorial > Warum kann ich diesen Tisch nicht löschen? Fremdschlüsseleinschränkung schlägt fehl, obwohl keine vorhanden ist!

Warum kann ich diesen Tisch nicht löschen? Fremdschlüsseleinschränkung schlägt fehl, obwohl keine vorhanden ist!

DDD
Freigeben: 2024-11-05 00:37:02
Original
544 Leute haben es durchsucht

Why Can't I Drop This Table? Foreign Key Constraint Fails Even Though There Are None!

Rätsel wegen falschem Foreign Key Constraint Fail

Beim Versuch, eine Tabelle zu löschen, wird die rätselhafte Fehlermeldung angezeigt: „Eine Tabelle kann nicht gelöscht oder aktualisiert werden Übergeordnete Zeile: Eine Fremdschlüsseleinschränkung schlägt fehl.“ Dieses verwirrende Problem tritt auf, obwohl bestätigt wurde, dass in der Datenbank keine Fremdschlüsselverweise vorhanden sind.

Eine Untersuchung der Tabellenstruktur zeigt, dass sie einen Primärschlüssel in der Spalte „area_id“ und einen eindeutigen Schlüssel in der Spalte „nombre_area“ besitzt . Es entzieht sich jeder Logik, warum diese Tabelle den Löschvorgang behindern würde, wenn man bedenkt, dass es in der Datenbank keine Fremdschlüsseleinschränkungen gibt.

Bei weiterer Untersuchung wird eine merkwürdige Entdeckung gemacht: Die Verwendung des MySQL-Abfragebrowsers oder von phpMyAdmin führt zu Entgegen den Erwartungen wurde für jede Abfrage eine eigene Verbindung erstellt. Dies erfordert die Ausführung aller Drop-Anweisungen in einer einzigen Abfrage, um das Problem zu beheben.

Der folgende Codeausschnitt kapselt diese Lösung:

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE my_first_table_to_drop;
DROP TABLE my_second_table_to_drop;
SET FOREIGN_KEY_CHECKS=1;
Nach dem Login kopieren

Wenn Sie FOREIGN_KEY_CHECKS auf 0 setzen, werden Fremdschlüsselprüfungen vorübergehend deaktiviert. ermöglicht das störungsfreie Löschen der Tabellen. Sobald die Tabellen gelöscht werden, wird FOREIGN_KEY_CHECKS auf 1 zurückgesetzt, um sicherzustellen, dass zukünftige Fremdschlüsseleinschränkungen durchgesetzt werden.

Dieses eigenartige Verhalten unterstreicht die Bedeutung der Verwendung des Befehls SET FOREIGN_KEY_CHECKS zur dynamischen Steuerung von Fremdschlüsseleinschränkungen, insbesondere bei der Arbeit mit Datenbankverwaltungstools, die mehrere Verbindungen pro Abfrage herstellen.

Das obige ist der detaillierte Inhalt vonWarum kann ich diesen Tisch nicht löschen? Fremdschlüsseleinschränkung schlägt fehl, obwohl keine vorhanden ist!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage