Migrationen in Django zurücksetzen
- Setzen Sie die gesamte Datenbank in Django zurück
- Setzen Sie eine Django-App auf ihre alten Migrationen zurück
Bei der Arbeit mit Datenbanken müssen wir oft eine Datenbank zurücksetzen, weil wir sie mit nutzlosen Daten füllen. Manchmal richten wir sogar eine Datenbank basierend auf einem fehleranfälligen Datenbankschema ein. Manchmal ändern wir sogar die Geschäftslogik, wodurch das gesamte Datenbankdesign angepasst wird. Diese Situationen sind im Bereich der Informatik ziemlich häufig, und es wurden einige gute Werkzeuge und Befehle entwickelt, um damit umzugehen.
Wenn wir in Django in eine solche Situation geraten, müssen wir die Migrationen und die Datenbank zurücksetzen. Beim Zurücksetzen von Migrationen haben wir einige Optionen auf der Liste.
- Setzen Sie die gesamte Datenbank zurück
- Setzen Sie eine Django-App auf einige alte Migrationen zurück
Setzen Sie die gesamte Datenbank in Django zurück
Wenn wir die gesamte Datenbank in Django zurücksetzen müssen, gibt es einige Optionen auf der Liste.
- Wenn wir die Standard-SQLite-Datenbank von Django verwenden, können wir die Datenbankdatei
db.sqlite3
löschen und dann allemigrations
-Ordner in allen Apps löschen. Nach dem Löschen der Ordnermigrations
können wir die Migrationen erneut durchführen und mit zwei Befehlen migrieren; nämlichpython manage.py makemigrations
undpython manage.py migration
. - Wenn wir eine andere relationale Datenbank wie PostgreSQL oder MySQL verwenden, können wir entweder alle Tabellen mit einem Datenbankverwaltungstool wie
pgAdmin
,DBeaver
usw. löschen oder manuell über die Befehlszeile. Oder wir können eine ganz neue Datenbank erstellen und sie dann mit unserem Django-Projekt verbinden. Beachten Sie, dass man in beiden Fällen zuerst allemigrations
-Ordner löschen und dann die Migrationen erneut durchführen und zuletzt migrieren sollte. - Eine andere Möglichkeit besteht darin, den Befehl
manage.py
von Django zu verwenden, um die gesamte Datenbank für uns zu löschen. Der Befehl lautetpython manage.py flush
. Auch hier müssen wir nach Verwendung dieses Befehls allemigrations
-Ordner löschen und dann die neuen Migrationen durchführen.
Setzen Sie eine Django-App auf ihre alten Migrationen zurück
Wenn wir nicht die gesamte Datenbank zurücksetzen müssen, sondern die Migrationen für eine bestimmte Django-App zurücksetzen müssen, haben wir dafür zwei Möglichkeiten. Zuerst können wir die aktuellen Migrationen einer Django-App in einige alte Migrationen umkehren. Zweitens können wir alle Migrationen für die Django-App zurücksetzen.
Wenn wir von einer neuesten Migration, sagen wir 0014, zu einer älteren Migration, sagen wir 0008, zurück migrieren müssen, können wir die folgenden Befehle verwenden.
python manage.py migrate AppName 0008
--- OR ---
python manage.py migrate AppName 0008_migration_name
Und wenn wir alle Migrationen für eine Django-App zurücksetzen müssen, können wir den folgenden Befehl verwenden.
python manage.py migrate AppName zero
Beachten Sie, dass Migrationen manchmal irreversibel sein können. Im Allgemeinen tritt diese Bedingung auf, wenn einige wesentliche Änderungen an den Django-Modellen vorgenommen wurden. Wenn wir versuchen, zu einer solchen Migration zurückzukehren, wird Django einen IrreversibleError
melden.