2015-07-02 8 views
14

Moja aplikacja Django ma plik requirements.txt (pokazany here), którego używam do instalowania modułów w moim środowisku wirtualnym. Wszystko dziala.Dlaczego ten błąd migracji bazy danych po aktualizacji mojej wersji django-mptt?

Jednak teraz próbuję zaktualizować django-mptt z wersji 0.6.1 do najnowszej wersji. (Właściwie to nie chcę aktualizować django-mptt. Chcę tylko uaktualnić moją wersję Django, ale wydaje się, że uaktualniam Django, muszę najpierw uaktualnić django-mptt zgodnie z opisem here). Więc robię pip install -U django-mptt. To powoduje, że django-mptt przechodzi z 0.6.1 na 0.7.4, a Django z wersji 1.7.1 na 1.8.2. A także powoduje, że django-cache-machine jest od początku do mistrza. Możesz zobaczyć zmiany na zrzucie ekranu poniżej.

Następnie, gdy wykonuję manage.py runserver, następnie prosi mnie o migrację. Więc to robię. Bez problemów. Jednak później, jeśli wpadnę wszystkie tabele, a następnie uruchom ponownie migrować, otrzymuję ten błąd podczas migracji:

django.db.utils.OperationalError: 
(1005, 'Can\'t create table `mydb_instance`.`#sql-21b_1e` 
(errno: 150 "Foreign key constraint is incorrectly formed")') 

Pełna ślad stosu jest here.

Co to jest błąd? Czy ma to coś wspólnego z faktem, że używam MariaDB (wersja serwerowa: 10.0.15-MariaDB Homebrew) zamiast MySQL jako mojej bazy danych?

enter image description here

EDIT: część poniżej tego punktu dodano lipca 6,2015 w 5:28 UTC

Wspomniałem wyżej, że po aktualizacji, byłem poproszony zrobić migrują. O dziwo, zdarzyło się to, mimo że uaktualnienie MPTT nie powoduje tworzenia nowych plików migracji! Kiedy zrobiłem manage.py runserver, otrzymałem następujący komunikat ostrzegawczy. Czemu? To nie ma sensu:

You have unapplied migrations; your app may not work properly until they are applied. 
Run 'python manage.py migrate' to apply them. 

EDIT: część poniżej tego punktu dodano 6,2015 lipca o 17:00 UTC

jako eksperyment, przesiadłem się z podstawową bazę danych z MariaDB do MySQL (wersja serwerowa: 5.6.25). Problem utrzymywał się. Błąd, który otrzymałem, to Cannot add foreign key constraint. Śledzenie całego stosu to here.

EDIT: część poniżej tego punktu dodano lipca 6,2015 na 17:05 UTC

przeżywa ślad stosu napisałem 5 minut temu, znalazłem błąd był wywołany brzmienie Polecenie SQL:

ALTER TABLE `myapp2_mymodel2` ADD CONSTRAINT `mymod_mymodel5_id_335ee73cecd6ecbf_fk_myapp5_mymodel5_id` FOREIGN KEY (`mymodel5_id`) REFERENCES `myapp5_mymodel5`; 

Widzę, na czym polega problem. myapp2_mymodel ma ograniczenie klucza obcego do myapp5_mymodel. Jednak przy próbie utworzenia tego FK nie działa, ponieważ cel klucza obcego jeszcze nie istnieje! Dlaczego kolejność tworzenia tabel różni się po aktualizacji?

+1

Czy aktualizacja Django wymaga aktualizacji MySQL? Jeśli tak, w jaki sposób to robi? –

+0

Nie. Aktualizacja pakietów Pythona nie zmienia bazowej bazy danych MARIADB. –

+1

Czy "mydb_instance" należy do Ciebie? Lub do Django? –

Odpowiedz

0

Sam rozwiązałem problem. Wygląda na to, że jednej z moich aplikacji Django brakowało mojej2. Brakowało folderu migracji. Naprawiłem go i wszystko zaczęło działać dobrze.

Powiązane problemy