Heim  >  Artikel  >  Datenbank  >  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
DDDOriginal
2024-11-05 00:37:02486Durchsuche

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;

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!

Stellungnahme:
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