Как повторить миграцию на django 1.8 после использования --fake

Что-то пошло не так в моих миграциях, я добавил новое поле даты и времени в модель, затем использовал makemigrations и migrate.

python manage.py makemigrations
python manage.py migrate

Но после этого миграция получила "ошибка таблицы уже существует". Я полагал, что смогу подделать миграции и начать все заново, поэтому я так и сделал.

python manage.py makemigrations --fake core

Operations to perform:
  Apply all migrations: core
Running migrations:
  Rendering model states... DONE
  Applying core.0001_initial... FAKED
  Applying core.0002_auto_20150525_1331... FAKED
  Applying core.0003_auto_20150525_1348... FAKED
  Applying core.0004_processo_data_atualizacao... FAKED

но новая миграция, которую я только что создал, тоже была подделана (конечно!).

Как правильно повторить миграцию (в данном случае core.0004) после этого?


person Fernando Freitas Alves    schedule 03.06.2015    source источник
comment
На юге можно было пройти определенный шаг, на который вы хотели перейти. Затем он будет мигрировать вперед или назад сразу после данного шага. Была ли эта функция удалена, когда они объединили ее с Django?   -  person spectras    schedule 03.06.2015
comment
@spectras нет, это точно так же   -  person Spc_555    schedule 03.06.2015


Ответы (1)


Сначала вы должны установить текущее состояние на 0003 с помощью --fake (при условии, что 0003 — это последняя миграция, которую вы действительно применили):

python manage.py migrate --fake core 0003

А дальше как обычно:

python manage.py migrate core

Соответствующая документация: https://docs.djangoproject.com/en/dev/ref/django-admin/#migrate

person Spc_555    schedule 03.06.2015
comment
что, если это была первая миграция, для которой я использовал --fake? - person Evyatar Sivan; 13.05.2016
comment
@EvyatarSivan вы должны использовать zero вместо номера миграции, например python manage.py migrate --fake core zero - person Spc_555; 13.05.2016
comment
См. также флаг --fake-initial docs.djangoproject.com/ ru/1.8/topics/migrations/. - person Christian Long; 08.02.2017
comment
К вашему сведению, если вы используете zero вместо номера миграции, вы потеряете все данные в этой таблице. - person JiminyCricket; 07.09.2018
comment
Обратите внимание, что core — это название приложения. - person Onengiye Richard; 19.11.2019