Frage

Ich mag Süden als Migrations-Tool in meinem django Projekt verwenden, aber ich habe Probleme mit Süd in Multi-User-Szenario mit:

Zwei Devs arbeiten gleichzeitig auf verschiedenen Maschinen erstellen zwei Migrationen mit der gleichen Anzahl

  • auf dem ersten PC: 0007_extend_lizard.py

  • auf dem zweiten PC: 0007_swap_name_adopter.py

In diesem Fall kann ich ./manage migrate --merge oder ./manage migrate 0006 (Rollback) laufen und laufen wieder ./manage migrate. Aber wenn ich neues Feld models.py in ./manage startmigration southdemo --auto und Ausführen hinzufügen, dann wird Süd-Meta-Daten aus der letzten Migration models = {}, und es hat hat von der ersten Migration fehlende Informationen. Das Ergebnis hiervon ist die Schaffung Migration 0008 mit der Erstellung wieder (!!!) Änderungen von dem ersten 0007.

Was ist der beste Weg, um dieses Problem zu lösen?

Zur Zeit denke ich über zwei Möglichkeiten:

  • fusioniert manuell sowohl 0007 Migration in einer Datei und dann wandern (aber einige muss man "Rollback" ausführen)

  • manuell bewegen models = {} Meta fehlt 0007 Migration dauern und dann der nächste --auto in 0008 wird perfekt funktionieren.

Was ist die bessere Wahl? Oder gibt es etwas anderes fehlt ich?

War es hilfreich?

Lösung

Nach dem migrate --merge tun oder Rollback-und Migrations, wenn Sie wissen, dass die jüngste Migration nun ungenau gefrorene Modelle hat, würde ich erstellen Sie einfach eine neue No-Op-Migration für die Zwecke der gefrorenen Modelle auf den neuesten Stand zu bringen. Führen Sie einfach ./manage.py startmigration myapp --empty freeze_noop. Jetzt ist Ihre gefrorenen Modelle werden up-to-date für das nächste Mal eine echte Migration automatisch erkennen soll.

Vielleicht scheint es ein wenig hässlich eine Migration no-op zu schaffen, aber mir scheint sauberer als eine der manuellen Geschichte Bearbeitungsoptionen, die Sie vorgeschlagen. Sie können als Äquivalent man denke an die Migration nicht-op eines „merge commit“ in einem DVCS.

Dieses Problem sollte in diesem Abschnitt der Süd-Dokumentation erwähnt werden ; Ich habe ein Thema eingereicht . (Update:. Jetzt ist es)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top