Jak ponownie uruchomić migrację danych w Django 1.8+? W razie potrzeby moja migracja jest ponumerowana 0011_my_data_migration.py i jest ostatnią migracją.Ponownie uruchom migrację danych Django
Odpowiedz
Powtórzenie migracji przed ponownym uruchomieniem.
./manage.py migrate --fake yourapp 0010_my_previous_data_migration
Następnie ponownie uruchom migrację.
./manage.py migrate your app 0011_my_data_migration
Następnie można powrócić do ostatniej przeprowadzonej migracji. W twoim przypadku powiedziałeś, że 0011 było najnowszym, więc możesz pominąć ten etap.
./manage.py migrate --fake yourapp 0014_my_latest_data_migration
Należy pamiętać, że w zależności od stanu bazy danych i zawartości migracji ponowne uruchomienie takiej migracji może spowodować błędy. Uwaga ostrzeżenie in the docs o opcji --fake
:
ten jest przeznaczony dla zaawansowanych użytkowników, aby manipulować aktualny stan migracji bezpośrednio, jeśli są one ręcznie stosowania zmian; należy pamiętać, że użycie
--fake
powoduje ryzyko umieszczenia tabeli stanu migracji w stanie, w którym będzie wymagane ręczne odtworzenie, aby migracja przebiegła poprawnie.
Odpowiedź Alasdaira daje zrzeczenie się na ten temat, ale udawanie migracji z powrotem do poprzedniej jest bezpieczne tylko wtedy, gdy migracja jest idempotentna, co oznacza, że można uruchomić ją wiele razy bez skutków ubocznych, takich jak duplikaty danych. Większość ludzi nie pisze w ten sposób swoich migracji, ale to dobra praktyka.
Masz dwie możliwości, aby ten bezpieczny proces:
- Nakręć migracje danych idempotent. Oznacza to, że wszystkie utworzone dane są ponownie wykorzystywane (np. Metodą
Model.objects.get_or_create()
) lub usunięte i ponownie utworzone. Ponownie używana jest lepsza opcja, ponieważ usuwanie i odtwarzanie zmienia indeksy i sekwencje bazy danych. - Wykonuj odwrotne migracje danych. Możesz to zrobić, przekazując 2 funkcje do
migrations.RunPython()
. Na przykład, jeśli maszmigrations.RunPython(add_countries)
, możesz zmienić to namigrations.RunPython(add_countries, remove_countries)
i usunąć wszystkie odpowiednie kraje w drugiej funkcji.
Jeśli wybierzesz opcję nr 2 wtedy można uruchomić:
./manage.py migrate yourapp 0010_my_previous_data_migration
./manage.py migrate yourapp 0011_my_data_migration
Jeśli chciałeś zrobić, że jedna wkładka, dzięki czemu można używać go w kółko:
./manage.py migrate --fake yourapp 0010_my_previous_data_migration && ./manage.py migrate yourapp 0011_my_data_migration
- 1. Django 1.8 Uruchom konkretną migrację
- 2. Ponownie uruchom zdalnie PostgreSQL
- 3. Wyczyść couchdb i uruchom ponownie
- 4. Ponownie uruchom nginx bez sudo?
- 5. Ponownie uruchom urządzenie z Androidem
- 6. Ponownie uruchom węzeł elastycznego wyszukiwania
- 7. Ponownie uruchom serwer Node.js programowo
- 8. Jak ponownie uruchomić migrację, bez usuwania wszystkich nowszych migracji?
- 9. Uruchom/zatrzymaj i ponownie uruchom usługę Jenkins na Windows
- 10. jak powiązać polecenie z "Uruchom ponownie i uruchom wszystko"?
- 11. Ponownie uruchom ostatni nieudany test w PHPUnit
- 12. Ponownie uruchom moją aplikację Phonegap programowo
- 13. Ponownie uruchom nieudaną konstrukcję Jenkinsa z czystym
- 14. Uruchom ponownie pętlę foreach w C#?
- 15. Uruchom ponownie komputer z aplikacji C#/WPF
- 16. Zatrzymaj AVPlayer i ponownie uruchom plik mp3
- 17. Jak przywrócić migrację bazy danych na Heroku
- 18. Jak mogę pominąć migrację za pomocą polecenia migracji Django?
- 19. Django 1.7 - makewigracje powodujące migrację do niezarządzanego modelu
- 20. Jak przeprowadzić migrację modeli Django z mysql do sqlite (lub między dowolnymi dwoma systemami baz danych)?
- 21. szyny uruchamiają określoną migrację
- 22. Jak wykonać migrację do aplikacji Django do wielokrotnego użytku?
- 23. Hibernuj zamień klasę embeddable na migrację istniejących danych
- 24. Azure na migrację AWS
- 25. Django - uruchom funkcję co x sekund
- 26. Aplikacja Django Admin lub uruchom własne?
- 27. Uruchom aplikację django na apache z uWSGI
- 28. Uruchom kod przed dowolnym poleceniem zarządzania django.
- 29. Uruchom kod z modułu Pythona, zmodyfikuj moduł, a następnie uruchom ponownie bez wychodzenia z interpolatora.
- 30. Scrapy Spider: Ponownie uruchom pająka, gdy kończy się