Ich fand den generierten Satz von Drop-Anweisungen nützlich und empfehle diese Anpassungen:
- Beschränken Sie die generierten Drops wie folgt auf Ihre Datenbank:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
Anmerkung 1:Dies führt die DROP-Anweisungen nicht aus, sondern gibt Ihnen nur eine Liste davon. Sie müssen die Ausgabe ausschneiden und in Ihre SQL-Engine einfügen, um sie auszuführen.
Hinweis 2:Wenn Sie VIEWs haben, müssen Sie jede DROP TABLE `VIEW_NAME`
korrigieren -Anweisung an DROP VIEW `VIEW_NAME`
manuell.
- Hinweis, per http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , Dropping mit cascade ist sinnlos / irreführend:
Damit die Drop-Anweisungen funktionieren, benötigen Sie daher Folgendes:
SET FOREIGN_KEY_CHECKS = 0
Dadurch werden die referenziellen Integritätsprüfungen deaktiviert. Wenn Sie also mit den erforderlichen Drops fertig sind, sollten Sie die Schlüsselprüfung mit
zurücksetzenSET FOREIGN_KEY_CHECKS = 1
- Die endgültige Ausführung sollte folgendermaßen aussehen:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;
NB:Um die Ausgabe von SELECT einfacher zu verwenden, kann die Option mysql -B hilfreich sein.