Backwards migration with Django South
Ok, więc to wydaje się być naprawdę głupie pytanie, i jestem pewien, że coś mi gdzieś umyka.
Jak wykonać migrację wstecz używając South Na Django?
Więc poprawiłem moje modele, stworzyłem migrację z schemamigration
, przeprowadziłem migrację z migrate
, i teraz zdałem sobie sprawę, że nie do końca tego chciałem i chcę go z powrotem.
Pomijając ręczną edycję tabel db i usuwanie plików migracji, jak mam cofnąć migrację? I znajdź odniesienia do wstecznych migracji za pomocą South za pośrednictwem Google, ale jeszcze nie znaleźć solidnego przykładu kodu dla niego.
Czy ktoś może pomóc?3 answers
Musisz ustalić numer migracji tuż przed tą, którą chcesz cofnąć.
Twoja aplikacja powinna mieć katalog migracji, w którym znajdują się pliki o nazwie
0000_initial.py
0001_added_some_fields.py
0002_added_some_more_fields.py
0003_deleted_some_stuff.py
Normalnie, gdy uruchomisz ./manage.py migrate your_app
, South uruchamia wszystkie nowe migracje, w kolejności. (Patrzy na tabele bazy danych, aby zdecydować, które z nich są 'nowe').
Możesz jednak również określić dowolną migrację według numeru, A South przeniesie Twoją bazę danych, do przodu lub do tyłu, do do tego momentu. Tak więc, z przykładowymi plikami powyżej, jeśli już migrujesz do 0003 i chcesz uruchomić 0003 w odwrotnej kolejności (cofając ją, skutecznie), uruchomisz
./manage.py migrate your_app 0002
South spojrzy na bazę danych, zdając sobie sprawę, że uruchomiła już 0003 i stwierdzi, że musi uruchomić odwrotną migrację dla 0003, aby wrócić do 0002.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-28 06:35:51
Na wypadek, gdyby ktoś (jak ja) zastanawiał się, jak wrócić z początkowego (0001):
django-admin.py migrate some_app zero
Wyjście:
Running migrations for some_app:
- Migrating backwards to zero state.
< some_app:0001_initial
"zero" jest specjalnym stanem przed jakąkolwiek migracją.
Numer referencyjny: http://south.aeracode.org/docs/commands.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-06 19:00:27
Dodaj nazwę migracji na końcu parametrów:
./manage.py migrate app-name 00xx-migration-name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-28 06:10:53