django migrate "Миграции не применяются". - PullRequest
0 голосов
/ 15 мая 2018

Я вроде знаю, почему, когда я делаю migrate, это дает мне сообщение no migrations to apply, но я просто не знаю, как это исправить

Вот что происходит.

Я добавил новое поле с именем update в поля моей модели.Я сделал migration, который создал файл с именем 0003_xxxxx.py, затем я сделал migrate, теперь это работает нормально.

Но затем по какой-то причине я должен удалить поле update изта же модельПоэтому я удалил его (более похоже на комментарий, вместо того, чтобы действительно удалить код), затем я сделал migration и migrate, которые удалили поле в db.(создано 0004_xxxxx.py)

Но вздохните ... по какой-то причине я должен снова добавить поле (вот почему я только закомментировал), но затем, прежде чем сделать migration, я удалил *Файлы 1020 * Я хотел удалить эти два файла, потому что это на самом деле тот же или почти тот же конфиг, что и 0003_xxxx.py, поэтому я чувствую, что бессмысленно иметь здесь 0003_xxxx.py and 0004_xxxx.py ... и когда я начинаю производство, это просто еще один дополнительный шагдля запуска Python.

После того, как я удалил эти два файла, я сделал migration, который создает еще один 0003_xxxx.py, но когда я делаю migrate, он выдает мне сообщение no migrations to apply

Я знаю, что, удалив 0003_xxxx.py и вернув оригинал 0003 and 0004, сделайте еще один migration (creates 0005_xxxx.py) then migrate, тогда изменения будут внесены.Я знаю это, потому что я действительно не удалял оригинал 0003 and 0004 Я переместил его куда-то на случай такого рода происшествия.

Но почему это так?и есть ли способ это исправить?

Заранее спасибо за любые ответы

Ответы [ 2 ]

0 голосов
/ 03 августа 2018

Или даже просто удалите последнюю строку миграции из вашей базы данных, вы можете попробовать следующее

Сначала проверьте, какую строку вы хотите удалить

SELECT * FROM "public"."django_migrations";

Теперь выберите последний id из вышеуказанного запроса и выполните

DELETE FROM "public"."django_migrations" WHERE "id"=replace with your Id;

пробег ./manage.py migrate.

0 голосов
/ 15 мая 2018

django ведет записи текущего migrations журнала по таблице django_migrations в вашей базе данных.

что-то вроде: enter image description here

Миграции - это цепочечная структура, она зависит от родительского узла. По этой таблице django может знать, какой файл миграции выполняется.

В вашем случае, no migrations to apply, поскольку новый create 0003_xxxx.py является записью в этой таблице, вы можете исправить это, удалив эту запись в этой таблице.

Если вы хотите удалить какой-либо файл миграции, смотрите Сокращение миграций .

...