Erneut eine Django-Daten-migration
Wie würde ich erneut eine Daten-migration auf Django 1.8+? Falls relevant, meine migration ist nummeriert 0011_my_data_migration.py und ist die neueste migration.
- Nur ein Hinweis, dass die Q und Lösungen sind noch arbeiten an Django 2.1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fake zurück auf die migration vor, die Sie wollen zu wiederholen.
Führen Sie die migration.
Dann können Sie gefälschte zurück zu der letzten Wanderung, die Sie ausgeführt haben. In Ihrem Fall, Sie haben gesagt, dass 0011 war die Letzte, so können Sie überspringen diese Stufe.
Beachten Sie, dass je nach Zustand der Datenbank und der Inhalte der Migrationen, erneutes ausführen einer migration, wie dies könnte Fehler verursachen. Beachten Sie die Warnung in den docs über die
--fake
option:./manage.py migrate --fake yourapp zero
wenn Ihr die erste migration.Alasdair Antwort gibt ein Haftungsausschluss über diese, aber das vortäuschen einer migration zurück zu dem vorherigen ist nur sicher, wenn Sie Ihre migration ist idempotent, das heißt, du kannst es mehrere Male ohne Nebenwirkungen wie doppelte Daten. Die meisten Menschen schreiben nicht Ihre Migrationen auf diese Weise, aber es ist gute Praxis.
Haben Sie zwei Möglichkeiten, um diesen Prozess sicher:
Model.objects.get_or_create()
- Methode) oder gelöscht und neu erstellt. Wiederverwendet ist die bessere option, als zu löschen und neu zu erstellen wird sich ändern, Datenbank-Indizes und Sequenzen.migrations.RunPython()
. Zum Beispiel, wenn Siemigrations.RunPython(add_countries)
Sie ändern würde, dassmigrations.RunPython(add_countries, remove_countries)
und löschen Sie alle relevanten Länder in der zweiten Funktion.Wenn Sie wählen Sie option #2 ist, dann würden Sie laufen:
Wenn Sie wollte machen, dass ein one-liner, so dass Sie können es verwenden, immer und immer wieder:
--fake
im one-liner?