Ok, więc wydaje mi się, że to głupie pytanie i jestem pewien, że coś gdzieś brakuje.
Jak przeprowadzić migrację wsteczną przy użyciu South na Django?
Więc poprawiłem swoje modele, utworzyłem migrację za pomocą schemamigration
, uruchomiłem migrację migrate
i teraz zdaję sobie sprawę, że nie do końca tego chciałem i chcę to zrobić wcześniej.
Bez ręcznej edycji tabel db i usuwania plików migracji, jak powinienem cofnąć migrację? Znajduję odniesienia do migracji wstecznych za pomocą Google za pośrednictwem Google, ale nie znalazłem jeszcze solidnego przykładu dla tego kodu.
Czy ktoś może pomóc?
django
migration
django-south
Ruiwen
źródło
źródło
Odpowiedzi:
Musisz ustalić liczbę migracji tuż przed tą, którą chcesz wycofać.
Twoja aplikacja powinna mieć katalog migracji z plikami o nazwach „podobnie”
Zwykle po uruchomieniu
./manage.py migrate your_app
South uruchamia kolejno wszystkie nowe migracje. (Sprawdza tabele bazy danych, aby zdecydować, które z nich są „nowe”).Możesz jednak określić dowolną migrację według numeru, a South przeprowadzi migrację bazy danych do przodu lub do tyłu , aby przenieść ją do tego punktu. Tak więc, z przykładowymi plikami powyżej, jeśli migrowałeś już do 0003 i chciałeś uruchomić 0003 w odwrotnej kolejności (skutecznie go cofając), uruchomiłbyś
South spojrzy na bazę danych, zda sobie sprawę, że już uruchomił 0003 i stwierdzi, że musi uruchomić odwrotną migrację dla 0003, aby wrócić do 0002.
źródło
Na wypadek gdyby ktoś (jak ja) zastanawiał się, jak przeprowadzić migrację z początkowej wersji (0001) :
wynik:
„zero” to specjalny stan przed każdą migracją.
Odniesienie: http://south.aeracode.org/docs/commands.html
źródło
migrate 0000
nie działa. Jeśli chodzi o fałszywą migrację, tak, możesz jej potrzebować, jeśli np. Musisz tylko cofnąć (prawdopodobnie błędną) migrację początkową, ale historia migracji uważa, że migracja ta nigdy nie miała miejsca.Dodaj nazwę migracji na końcu parametrów:
źródło
00xx
-. Podczas ulepszania i testowania migracji możesz mieć obie komendy w historii: do przodu (bez argumentu), do tyłu z poprzednim numerem stanu.