Я начал проект django 1.8, который использует систему миграции.
Как-то по пути все стало беспорядочно, поэтому я удалил папки миграции и таблицу из БД, и теперь я пытаюсь их восстановить, без успеха.
У меня есть три приложения (3 models.py
файлы), и модели отражают таблицы ТОЧНО!
Лучший подход, который я нашел до сих пор, заключался в следующем:
- Удалите все папки
migrations
. Готово! - Удалить все из таблицы
django_migrations
. Готово! - Запустите
python manage.py makemigrations --empty <app>
для каждого приложения. Готово! - Запустите
python manage.py migrate --fake
. Готово! (хотя он работает, только если я запускаю его после каждой командыmakemigrations
.
Теперь я добавляю новое поле, запускаю команду makemigrations
, и я получаю следующую ошибку: django.db.utils.OperationalError: (1054, "Unknown column 'accounts_plan.max_item_size' in 'field list'")
Я сжигаю ЧАСЫ по этому поводу. Как h ** l можно инициализировать миграцию, чтобы я мог продолжать работать без прерываний миграции каждый раз?
Почему это так сложно? Почему нет простой однострочной линии: initiate_migrations_from_schema
?
EDIT:
Теперь все становится еще более неприятно. Я усекал таблицу django_migrations
и удалил всю папку migrations
.
Теперь я пытаюсь запустить python manage.py migrate --fake-initial
(что-то, что я нашел в документах DEV), так что он настраивает все внутренние приложения Django (auth, session и т.д.), И я получаю: (1054, "Unknown column 'name' in 'django_content_type'")
.
Теперь этот "столбец" не является реальным столбцом. Это a @property
, определенное в приложении Django contenttypes
. ЧТО ЗДЕСЬ ПРОИСХОДИТ? Почему он идентифицирует свойство name
как реальный столбец?