Ich habe eine Datenbank, die ich gesichert habe. Jetzt versuche ich, den ganzen Inhalt von der ursprünglichen db zu löschen und es zu seinem leeren Zustand wieder herzustellen. Da es sich um eine relationale Datenbank handelt, hat sie wichtige Einschränkungen. Gibt es ein Werkzeug, das ich dafür verwenden könnte?Leeren Sie ein relationales Datenbankschema
Antwort
Der einfachste Weg, dies zu tun, ist wahrscheinlich Fremdschlüssel-Prüfungen zu deaktivieren, dann die Tabellen abzuschneiden. Da Fremdschlüssel deaktiviert sind, spielt die Reihenfolge, in der Sie die Tabellen abschneiden, keine Rolle.
set foreign_key_checks = 0;
truncate table parent;
truncate table child;
truncate table ...
Sie können sogar das information_schema verwenden, um die truncate-Tabellenanweisungen für Sie zu generieren. Etwas wie dieses:
Vielen Dank für die Hilfe. Das Problem wurde behoben. –
Sie können alle Einschränkungen vorübergehend löschen oder deaktivieren, alle Tabellen abschneiden und dann die Einschränkungen wiederherstellen. Ich habe diesen Ansatz für SQL Server verwendet und es funktioniert gut.
http://lists.mysql.com/mysql/194954
Vielleicht ein noch besserer Ansatz wäre, das Schema in Skripten auf links drehen (die Sie unter Versionskontrolle gestellt) und dann die Datenbank von Grund auf neu erstellen.
Danke. Ich werde diese Lösungen versuchen. –
Danke, löste das Problem. –
- 1. SQL-Abfrage für ein Datenbankschema
- 2. Grails automatisches relationales Holen
- 3. Linqdatasource und relationales Datenproblem
- 4. Object/Relationales Mapping
- 5. EtherPad-Datenbankschema?
- 6. Best Practices für ein Kalender-Datenbankschema?
- 7. Schrittweise Migration auf ein neues Datenbankschema. Vorschläge?
- 8. Relationales Datenbankdesign Gute Praxis: Normalisierung?
- 9. So aktualisieren Sie das Datenbankschema mit NHibernate
- 10. Ist das ER-Diagramm in MySQL Workbench ein relationales Modell?
- 11. Gibt es ein nicht-relationales Äquivalent von DBI in Perl?
- 12. Schienen aktualisieren Datenbankschema
- 13. Datenbankschema eines ähnlichen Systems
- 14. Klassengenerierung aus dem Datenbankschema
- 15. Visuell Mapping mysql Datenbankschema
- 16. Datenbankschema für User-Bewertungen
- 17. Datenbankschema für die Produktmenge
- 18. Einfaches Datenbankschema für Shop
- 19. Nicht relationales Datenbankdesign mit SQL Server?
- 20. MySQL-Import-Datenbankschema
- 21. Datenbankschema von DomainModel
- 22. Änderungen am Datenbankschema - Db2
- 23. Datenbankschema für Delta-Synchronisation geeignet
- 24. Datenbankschema für Profil und Auftrag
- 25. Soll/kann man ein Datenbankschema von Einsenklassen erzeugen?
- 26. Datenbankschema für große Web-Apps
- 27. ASP.NET Core 1 RC2 - Datenbankschema
- 28. Wie gestaltet man das Datenbankschema?
- 29. X11 - Leeren Sie den Bildschirm
- 30. Leeren Sie ein Div in jquery, wenn der mobile Browser
Ich weiß nicht von einem Werkzeug, das dies tun kann, aber es kann nicht notwendig sein. Der Trick besteht darin, aus Tabellen in der richtigen Reihenfolge zu löschen. Ich musste das einmal in Oracle machen. Oracle hat eigene Tabellen, die Informationen über alle Beziehungen zwischen den Tabellen enthalten, die ich erstellt habe. Durch Abfragen dieser Metatabelle konnte ich die richtige Reihenfolge der Relationen erhalten, um sie zu löschen, ohne jemals eine Schlüssel-Contraint-Verletzung zu treffen (ich poste als Kommentar, weil ich nicht weiß, ob dies in MySQL möglich ist). Die andere (und schneller ablaufende) Option besteht darin, Beschränkungen zu deaktivieren, Einschränkungen zu kürzen oder wieder zu aktivieren. – FrustratedWithFormsDesigner