Django - миграция применяется до ее зависимости - PullRequest
1 голос
/ 23 января 2020

Я работаю над проектом Django, и у меня возникли проблемы, которые мне помог коллега. Однако, когда мы исследовали проблему, она удалила миграцию, потому что она, казалось, вызывала некоторые проблемы. В конце концов, проблема не была связана с этим, но теперь она ушла из компании.

Проект казался нормальным, пока я не попытался применить изменения к модели и запустить "makemigrations" и "migrate" и увидел некоторые ошибки, заявив, что Migration <migration_name> is applied before its dependency <migration2> on database 'default'.

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

Однако я все еще не могу правильно запустить проект, даже с «хорошими» миграциями, которые я получил с рабочего сервера, он по-прежнему говорит, что миграция применяется до его зависимости. Я пытался переносить каждую миграцию по отдельности, набрав

python manage.py migrate project_name migration_name

Но он говорит об одной и той же ошибке, поэтому я не знаю, неверен ли мой синтаксис или чего я не понимаю. Что бы вы порекомендовали мне сделать, или что может быть не так с тем, что я сделал? Я относительно новичок в Django, поэтому я не знаю, где искать.

1 Ответ

1 голос
/ 23 января 2020

Миграции действительно должны применяться в правильном порядке, и этот порядок указывается атрибутом dependencies класса Migration в ваших файлах миграции.

Иногда по разным причинам (чаще всего потому, что из двух миграций, созданных в двух разных ветвях), значение этого атрибута оказывается неверным. Правильное решение - просто проверить файлы миграции, указанные в сообщении об ошибке (и, возможно, некоторые из миграций между et c), и вручную исправить зависимости для каждого из них, чтобы вы вернулись к согласованному порядку.

...