Ok, das scheint eine wirklich dumme Frage zu sein, und ich bin mir sicher, dass mir irgendwo etwas fehlt.
Wie führt man eine Rückwärtsmigration mit South auf Django durch?
Also habe ich meine Modelle optimiert, eine Migration mit erstellt schemamigration
, die Migration mit ausgeführt migrate
, und jetzt ist mir klar, dass dies nicht ganz das ist, was ich wollte, und ich möchte es wieder so wie zuvor.
Wie sollte ich die Migration zurücksetzen, ohne DB-Tabellen manuell zu bearbeiten und Migrationsdateien zu entfernen? Ich finde Verweise auf Rückwärtsmigrationen mit South über Google, habe aber noch kein solides Codebeispiel dafür gefunden.
Kann jemand helfen?
django
migration
django-south
Ruiwen
quelle
quelle
Antworten:
Sie müssen die Nummer der Migration kurz vorher herausfinden die Sie zurücksetzen möchten.
Ihre App sollte über ein Migrationsverzeichnis verfügen, in dem sich die Dateien wie folgt befinden
Normalerweise beim Laufen
./manage.py migrate your_app
South alle neuen Migrationen der Reihe nach aus. (In den Datenbanktabellen wird entschieden, welche "neu" sind.)Sie können jedoch auch jede Migration nach Nummer angeben, und South migriert Ihre Datenbank entweder vorwärts oder rückwärts , um sie an diesen Punkt zu bringen. Wenn Sie also mit den obigen Beispieldateien bereits auf 0003 migriert sind und 0003 in umgekehrter Reihenfolge ausführen möchten (effektiv rückgängig machen), werden Sie ausgeführt
South würde sich die Datenbank ansehen, feststellen, dass bereits 0003 ausgeführt wurde, und feststellen, dass die umgekehrte Migration für 0003 ausgeführt werden muss, um zu 0002 zurückzukehren.
quelle
Nur für den Fall, dass sich jemand (wie ich) gefragt hat, wie er von der ursprünglichen (0001) zurück migrieren soll :
Ausgabe:
"Null" ist ein Sonderzustand vor jeder Migration.
Referenz: http://south.aeracode.org/docs/commands.html
quelle
migrate 0000
nicht funktioniert. Über die gefälschte Migration, ja, Sie benötigen sie möglicherweise, wenn Sie z. B. nur die (wahrscheinlich falsche) anfängliche Migration rückgängig machen müssen, aber der Migrationsverlauf denkt, dass diese Migration nie stattgefunden hat.Fügen Sie am Ende der Parameter einen Migrationsnamen hinzu:
quelle
00xx
- reicht aus. Wenn Sie eine Migration verbessern und testen, können Sie beide Befehle im Verlauf haben: vorwärts (kein Argument), rückwärts mit der vorherigen Statusnummer.