2012-04-10 20 views
12

Tło: -Jaki jest poprawny sposób radzenia sobie z migracją DB podczas korzystania z South, Django i Git?

Używam Django 1.3. Używamy South jako modułu do migracji DB i Git SCM.

Problem: -

Co to jest poprawny sposób radzić sobie z folderu, który jest tworzony migracje?

Głównym problemem jest to, że wprowadzam zmiany w schemacie DB w maszynie programistycznej, kiedy przesyłam go do serwera produkcyjnego, muszę przeprowadzić migrację istniejącego schematu. Robiąc to zawsze jest jakiś problem z plikami migracyjnymi.

Czy powinienem po prostu dodać folder migracji do gitignore? lub czy istnieje lepszy sposób na zrobienie tego?

+0

Co masz z plikami migracyjnymi? Zazwyczaj sprawdzam je w git i działa dobrze, o ile starasz się je zachować w kolejności (więc nie rób nowych równolegle w różnych gałęziach). – Dougal

+0

Problem polega na tym, że jeśli przeprowadzę migrację schematu na maszynie lokalnej i spróbuję zrobić to samo na maszynie produkcyjnej, powinien on działać jednokrotnie. Czy to działa ? np. czy te same pliki migracji działają również na serwerze produkcyjnym? – Akamad007

+0

Tak, powinny, zakładając, że nie wprowadziłeś innych zmian do DB. Jeśli masz konkretny komunikat o błędzie lub coś, co możemy próbować debugować, ale "nie działał raz" jest ciężko pracować. : p – Dougal

Odpowiedz

21

Powinieneś dodać folder migracji do swojego systemu kontroli wersji i używać tych samych plików do produkcji i rozwoju. Możesz napotkać pewne problemy w systemie produkcyjnym, jeśli wprowadziłeś swoje migracje od początku i masz już istniejące tabele.

Dlatego musisz wykonać fałszywą pierwszą migrację, która zwykle robi to samo, co syncdb, kiedy twoja baza danych została utworzona po raz pierwszy. Tak więc, próbując po raz pierwszy zastosować migrację do aplikacji na komputerze produkcyjnym, wykonaj manage.py migrate app_name 0001 --fake. Dzięki temu South wie, że pierwsza migracja została już zastosowana (co już się stało z syncdb) i po ponownym uruchomieniu migrate, będzie kontynuowana z następującymi migracjami.

+0

Dokładnie to, czego szukałem. : P dzięki! (Znalazłem odpowiedź, a także ją zbadałem. Są tak wspaniale) – Akamad007

Powiązane problemy