2013-01-09 12 views
6

Na początkowych etapach mojego projektu wprowadzam wiele zmian w modelach, a tym samym wygenerowałem wiele migracji na południu dla moich aplikacji. Czy można je skonsolidować w jakikolwiek sposób przed przejściem do mojego serwera produkcyjnego w celu przeprowadzenia migracji, więc nie mam miliona migracji dla każdej aplikacji? A jeśli tak, to jak mam to zrobić?Konsolidacja Django South Migrations

Odpowiedz

5

Zawsze można usunąć istniejące migracje i create a new "initial" migration.

Aby to zrobić, trzeba będzie:

  1. Usuń pliki migracyjne dla Ciebie aplikacja (usuń folder łącznie)
  2. Run ./manage.py convert_to_south myapp

To zostawię was z pojedynczym migracja odpowiadająca bieżącemu stanowi Twojej aplikacji.


Ewentualnie zawsze można spakować najnowsze migracje razem:

  1. Usuń pliki migracyjne, które chcesz połączyć (tylko wtedy, gdy są one aktualne onces)
  2. Uruchom ./manage.py schemamigration myapp

Spowoduje to utworzenie nowej migracji, która będzie odpowiadać usuniętym migracjom.


Oba te prawdopodobnie zepsuć DB twojego rozwoju.

+0

, więc podstawą jest: nie, lepiej jest po prostu pozwolić migracji na własną rękę? – hkothari

+1

@hkothari Tak zrobię, tak! –

+1

Potrzebuję 'manage.py migrować zero --fake', aby wyczyścić swoją południową bazę danych również (przed convert_to_south lub' manage.py schemamigration --initial'.alternatywnie "--delete-ghost-migrations" selektywnie usunie wszystkie migracje usunięte z katalogu migracji – hobs

1

Ponieważ jest to środowisko programistyczne, to jak to zrobić (przy użyciu SQLite, patrz poniżej dla innych serwerów SQL):

  1. Czy wszystkie zmiany, niech pliki migracyjne piętrzyć. Brak dopuszczającej pliki migracja do VCS
  2. Po zakończeniu usunąć wszystkie nowe pliki migracji
  3. bazie Rename
  4. Run manage.py migracji. Spowoduje to utworzenie struktury bazy danych tak, jak przed wprowadzeniem w niej jakichkolwiek zmian.
  5. Uruchom program do zarządzania makra. Stworzy to niezbędne migracje, które odzwierciedlać aktualny stan
  6. Cofnąć oryginalna baza danych, która ma już ostateczną strukturę & dane
  7. Commit migracje plików

Przy zastosowaniu „właściwego” serwerów SQL, po prostu zachować dwa bazy danych: produkcja i rozwój. Zmień ustawienia projektu, aby wskazywała na produkcyjną bazę danych, zamiast zmieniać nazwę w kroku 3. Możesz także pominąć krok 4.

Powiązane problemy