Migrationen in Django zurücksetzen

Vaibhav Vaibhav 30 Januar 2023
  1. Setzen Sie die gesamte Datenbank in Django zurück
  2. Setzen Sie eine Django-App auf ihre alten Migrationen zurück
Migrationen in Django zurücksetzen

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.

  1. Setzen Sie die gesamte Datenbank zurück
  2. 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.

  1. Wenn wir die Standard-SQLite-Datenbank von Django verwenden, können wir die Datenbankdatei db.sqlite3 löschen und dann alle migrations-Ordner in allen Apps löschen. Nach dem Löschen der Ordner migrations können wir die Migrationen erneut durchführen und mit zwei Befehlen migrieren; nämlich python manage.py makemigrations und python manage.py migration.
  2. 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 alle migrations-Ordner löschen und dann die Migrationen erneut durchführen und zuletzt migrieren sollte.
  3. 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 lautet python manage.py flush. Auch hier müssen wir nach Verwendung dieses Befehls alle migrations-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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - Django Migration