Das Löschen einer Tabelle kommt nicht sehr häufig vor. Insbesondere bei Tabellen mit Fremdschlüsselassoziationen müssen Sie beim Löschen vorsichtiger sein. Während des Entwicklungsprozesses kommt es jedoch häufig vor, dass Probleme mit dem Schemaentwurf festgestellt werden und alle Tabellen in der vorhandenen Datenbank gelöscht und neu erstellt werden müssen. Darüber hinaus ist es während des Tests auch erforderlich, alle Tabellen in der Datenbank neu zu erstellen. Natürlich können das auch viele automatisierte Tools. Beim Löschen einer Tabelle wird möglicherweise eine Fehlermeldung wie diese angezeigt: FEHLER 1217 (23000): Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl Dies liegt daran, dass die Felder in der Tabelle, die Sie löschen möchten, als Fremdschlüssel in anderen Tabellen verwendet werden. Daher müssen Sie die Tabelle mit dem Fremdschlüssel (untergeordnete Tabelle) löschen, bevor Sie diese Tabelle (übergeordnete Tabelle) löschen. Das heißt, der Vorgang zum Löschen einer Tabelle muss mit dem Vorgang zum Erstellen einer Tabelle konsistent sein. Dies ist jedoch häufig nicht akzeptabel. Einerseits ist eine manuelle Sortierung bei zu vielen Tabellen nicht akzeptabel. Andererseits gibt es derzeit kein automatisches Tool zum Sortieren (tatsächlich ist dies nicht unmöglich). Aus diesem Grund stellt MySQL die Variable FOREIGN_KEY_CHECKS bereit, um festzulegen, ob bei Bedarf Fremdschlüsseleinschränkungen überprüft werden sollen. Generell wird folgendes empfohlen: Generieren Sie zunächst automatisch alle DROP-Anweisungen und ersetzen Sie MyDatabaseName durch Ihren Datenbanknamen: SELECT concat('Tabelle löschen, wenn vorhanden', Tabellenname, ';') VON information_schema.tables WHERE table_schema = 'MeinDatenbankname'; Fügen Sie dann die folgenden Anweisungen hinzu, um die Variable FOREIGN_KEY_CHECKS vor und nach dem generierten Code festzulegen: SETZEN SIE FOREIGN_KEY_CHECKS = 0 -- DROP-Anweisung SET FOREIGN_KEY_CHECKS = 1; Wenn Sie jedoch den letzten Satz vergessen, spielt das keine große Rolle. Diese Variable basiert auf der Sitzung. Das heißt, wenn Sie den Client schließen und erneut verbinden, wird diese Variable auf den Standardwert zurückgesetzt. Wenn Sie Fremdschlüsseleinschränkungen nicht global prüfen müssen (diese Situation ist relativ selten), können Sie Folgendes tun: Setzen Sie GLOBAL FOREIGN_KEY_CHECKS = 0; oder setze @@global.FOREIGN_KEY_CHECKS = 0; Die obige einfache Implementierung zum Ignorieren von Fremdschlüsseleinschränkungen beim Löschen von MySQL-Tabellen ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: Super detaillierte Schritte zur Installation von Zabbix3.0 auf Centos7
>>: js implementiert eine auf Canvas basierende Uhrkomponente
Da die Standardparameter des Linux-Kernels auf de...
Inhaltsverzeichnis MySQL Shell import_table Daten...
Mit dem Befehl „sudo“ kann ein vertrauenswürdiger...
Einführung Im vorherigen Artikel wurden die einfa...
Ich habe mir vor kurzem ein Video von einem Auslä...
Vorwort Im vorherigen Artikel habe ich Ihnen anha...
Originallink: https://vien.tech/article/138 Vorwo...
Weiterführende Literatur: Beheben Sie das Problem...
1. Überlauf Überlauf ist Überlauf (Container). We...
In diesem Artikel wird der spezifische Code von U...
1. Verwenden Sie die Floating-Methode Effektbild:...
In diesem Artikel finden Sie das grafische Tutori...
1. Installieren Sie Apache # yum install -y httpd...
In letzter Zeit besteht der Bedarf, automatisch n...
Übersetzt aus der offiziellen Docker-Dokumentatio...