Ich versuche, alle Tabellen mit einer Ausnahme aus einer Datenbank zu löschen, und erhalte am Ende den folgenden Fehler:
Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl
Natürlich könnte ich versuchen, die wichtigsten Einschränkungen zu ermitteln und schließlich alle Tabellen zu löschen, aber ich würde gerne wissen, ob es eine schnelle Möglichkeit gibt, das Löschen aller Tabellen zu erzwingen (da ich diese Tabellen wieder einfügen kann nicht gelöscht werden wollen).
Google hat mich auf eine Website gerichtet, die die folgende Methode vorschlägt:
mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
Die kurze Antwort ist, dass es nicht wirklich funktioniert hat, da ich den gleichen Fehler erhalten habe, während ich einige weitere Tabellen löschen konnte. Ich habe bei Stack Overflow Möglichkeiten gesehen, alle Fremdschlüssel mit einer bestimmten Tabelle zu verknüpfen, aber das ist viel zu zeitaufwändig, es sei denn, ich schreibe alles (was möglich ist, wenn es keine andere Option gibt).
Die Datenbank ist 4.1, daher kann ich sie nicht verwenden DROP DATABASE
Ideen?
quelle
Antworten:
Da Sie keine Daten behalten möchten, löschen Sie die gesamte Datenbank und erstellen Sie eine neue.
quelle
Dies kann für jemanden nützlich sein, der von einer Suche hierher kommt. Stellen Sie sicher, dass Sie versuchen, eine Tabelle und keine Ansicht zu löschen .
SET foreign_key_checks = 0
dient dazu, Fremdschlüsselprüfungen auszuschalten und dannSET foreign_key_checks = 1
Fremdschlüsselprüfungen wieder einzuschalten. Während die Überprüfungen deaktiviert sind, können die Tabellen gelöscht werden. Die Überprüfungen werden dann wieder aktiviert, um die Integrität der Tabellenstruktur zu gewährleisten.quelle
Wenn Sie phpmyadmin verwenden, ist diese Funktion bereits vorhanden.
quelle
Sie können die folgenden Schritte ausführen. Es hat für mich funktioniert, eine Tabelle mit Einschränkungen zu löschen. Die Lösung wurde bereits im obigen Kommentar erläutert. Ich habe gerade einen Screenshot dafür hinzugefügt.
quelle
Drop-Datenbank gibt es in allen Versionen von MySQL. Wenn Sie jedoch die Tabellenstruktur beibehalten möchten, finden Sie hier eine Idee
mysqldump --no-data --add-drop-database --add-drop-table -hHOSTNAME -uUSERNAME -p> dump.sql
Dies ist ein Programm, kein MySQL-Befehl
Dann melden Sie sich bei MySQL und
source dump.sql;
quelle
Einfache Lösung, um alle Tabellen auf einmal vom Terminal zu löschen.
Dies umfasste einige Schritte in Ihrer MySQL-Shell (allerdings keine Ein-Schritt-Lösung). Dies hat mir geholfen und meinen Tag gerettet.
Arbeitete für Server Version: 5.6.38 MySQL Community Server (GPL)
Schritte, denen ich gefolgt bin:
MySQL-Shell
quelle