2012-02-26 8 views
14

Używam sqlite3 i pycharm, aby dowiedzieć się więcej o django, i googled, aby znaleźć, że południe jest zalecane, aby ułatwić modyfikowanie modeli po ich utworzeniu .newbie trudność korzystania z south z pycharm - DatabaseError: brak takiej tabeli: south_migrationhistory

Staram się postępować zgodnie z radą na http://south.aeracode.org/docs/tutorial/part1.html#starting-off.

Największym sukcesem do tej pory jest stworzenie prostego modelu i uruchomienie syncdb przed dodaniem południa do installed_apps. W ten sposób tworzone są specjalne tabele i mam szansę na stworzenie superużytkownika. (Administrator Django wydaje się denerwować, jeśli nie ma żadnych użytkowników).

Następnie dodaję południe do INSTALLED_APPS i uruchom django_manage.py zakładki schemamigration --initial

wydaje się działać prawidłowo. Tworzony jest nowy katalog o nazwie migracje z kilkoma plikami w nim zawartymi w folderze mojej aplikacji i zachęcającą wiadomością. „Utworzony 0001_initial.py Teraz można zastosować tę migrację. ./manage.py migracji zakładki”

Kolejny krok - django_manage.py”migracji zakładek generuje następujący komunikat o błędzie django.db.utils.DatabaseError : nie ma takiego stół. south_migrationhistory

Myślałem, że stół będzie tworzony w pierwszym etapie schememigration Co mam brakuje ktoś może pomóc

Marg

Odpowiedz

27

South używa własnej tabeli, aby śledzić, które migracje zostały zastosowane. Zanim będzie można zastosować dowolne migracje, należy to zrobić, korzystając z python ./manage.py syncdb.

Poza konfiguracją na południe, syncdb jest czasem potrzebny w projektach innych niż południowe, np. Bardzo często django.contrib.auth.

Zauważ, że dla wygody, można uruchomić zarówno w jednym zamachem jak to

python ./manage.py syncdb --migrate 
+0

Dzięki SPOS i KDT - teraz na pewno mają south_migrationhistory tabeli, a nawet otrzymuję komunikat zwrotny, gdy uruchomiłem synchronizację z pychar m mówiąc, że mój model został dodany do migracji (lub słów na ten temat) - ale teraz ekran administratora jest dużą pustą wiadomością powitalną nakazującą mi utworzenie bazy danych. – Marg

+0

dlatego odwołanie się do tego oficjalnego południowego samouczka (http://south.readthedocs.org/en/latest/tutorial/part1.html#changing-the-model) 'python ./manage.py syncdb --migrate' powinien zastąpić: './manage.py schemamigration southtut --initial' i' ./manage.py migrate southtut' mam rację? – andi

2

mój ostatni (nieudanej) wysiłek był następujący

  1. Tworzenie aplikacji - synch db - superuser stworzony
  2. Ekran testu -admin pokazuje podstawowe tabele
  3. Dodaj południe, a syncdb z wiersza poleceń z manage.py syncdb - south_migrationhistory tabl e utworzone. Dodaj podstawowy model waniliowy
  4. próbowałem różnych kombinacji manage.py syncdb -manage i schemamigration z pycharm (jeśli jest prowadzony od wewnątrz pycharm katalogiem migracje jest tworzony w aplikacji - jeśli uruchamiane z linii poleceń katalog nie wydają się być utworzone jako .)
  5. ekran Admin Django pokazuje tabela - ale gdy próbuję edytować tabeli mówi, że nie istnieje
  6. Sprawdź struktury bazy danych SQLite użyciu przeglądarki - stół do nowo utworzonego modelu nie istnieje

Zaczynam myśleć, że cała sprawa nie jest warta czasu marnować kłopotów - może lepiej mi tylko modyfikację tabel w przeglądarce SQLite

+1

To, co próbujesz zrobić, nie jest egzotyczne ani skomplikowane i powinno działać. Sugeruję, abyś przeszedł przez to z linii poleceń, opuścił PyCharm z równania, dopóki nie zadziała. Należy wyjaśnić, że "schematamigracja" nie dotyczy twojej bazy danych, po prostu generuje pliki .py w migracjach/- musisz potem użyć "migrowania", aby faktycznie zaktualizować bazę danych. – kdt

+0

Dziękujemy za wyjaśnienie, że wymagany jest dwuetapowy proces. – Marg

+1

Dziękuję za wyjaśnienie, że wymagany jest dwuetapowy proces. Przechodzę teraz do etapu dodawania katalogu migracji do schemamigracji, po którym następuje pierwsza migracja, ale wciąż nie jest to możliwe przy wprowadzaniu zmian w modelu. Uruchamianie schemamigration --auto z powodzeniem rozpoznaje nowe pole i oczekuje dostarczenia wartości domyślnej, ale potem następuje migracja z komunikatem "django.db.utils.DatabaseError: table" bookmarks_link "już istnieje". Oczywiście, że istnieje - to ten, który próbuję zmienić. Nadal wydaje mi się, że czegoś brakuje. – Marg