2016-07-08 21 views
2

Migrationen ein Projekt wächst, Migrationen (beide makemigrations und migrate) länger und länger zu verzögern ziemlich viel jeden Einsatz. Django Sie die zu squash them lassen, so dass Sie nicht eine lange Liste von Migrationsdateien haben aber immer noch, die Wanderungen nehmen die gleiche Menge an ZeitZurücksetzen lange Django

Dann habe ich versucht, die folgenden:.

  1. entfernen Sie alle Migrationsdateien in meiner app
  2. reinigen django_migrations Tabelle in der DB
  3. Run makemigrations (die 0001_initial für meine Anwendung erstellen)
  4. Run migrate --fake (zum Auffüllen auf django_migrations Tabelle)

jetzt die neuen Migrationen sind sehr schnell auf Kosten der Migrationsgeschichte zu verlieren.

Also meine Frage ist, bedenkt, dass dies wie eine v1.0 sein könnte, und es ist ein eigenständiges Projekt, von dem jedes andere Projekt abhängt, Was sind die Risiken, dies zu tun?

Ich habe das Gefühl, dass es etwas ist, das nicht gemacht werden sollte, da ich keinen spezifischen Django-Befehl dafür finden konnte. South hat einen Reset, aber jetzt django Migrationen hat nur die Squash ...

+1

Dies wäre kein Problem, wenn Sie sich nicht wirklich Gedanken über Rückwärtsmigrationen machen. – karthikr

Antwort

0

Solange alle Ihre Anlagen auf dem neuesten Stand waren, wenn Sie die Migration gelöscht, es gibt keinen Schaden alte Migrationen zu löschen. Der einzige Nachteil ist, dass Sie nach dem Löschen nicht einfach in den historischen Zustand der Datenbank zurückkehren können, aber außer im Falle einer alten Backup-Datei sollten Sie keine Verwendung davon haben.

Wie bereits erwähnt, stellen Sie sicher, dass alle Benutzer Ihr Projekt auf dem neuesten Stand sind (oder geben Sie vor dem Löschen Anweisungen wie das Commit an, damit sie vor dem Upgrade auf HEAD die Migrationen durchführen können, wenn Sie ein Quellversions-Steuerelement verwenden).

Wenn Sie eine Drittanbieter-App entwickeln, wird die Installation komplizierter (Umgang mit dem Argument --fake, ob Sie ein Upgrade oder eine Installation durchführen ...), aber das ist nicht Ihr Fall.