Миграции Django не работают. Приходится каждый раз удалять базу данных и начинать заново.

У меня есть проект django, который работает нормально. Однако каждый раз, когда в моих моделях происходят изменения (когда я добавляю атрибуты в модель), миграции перестают работать. Обычно возникает какая-то ошибка или миграции не выполняются. Единственный способ заставить миграции работать - это удалить базу данных и начать все сначала. Это очень странное поведение, и оно не может работать в живой/производственной среде. Недавно мне пришлось удалить базу данных в производственной среде, и это было очень грязно.

Есть ли способ исправить это? Разве не странно, что Django усложняет работу с миграциями, когда утверждает, что миграции все упрощают. Может я делаю что-то не так? Я не знаю, с чего начать.

Перед тем как запустить python manage.py migrate, выполняете ли вы python manage.py makemigrations?

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

Когда вы редактируете что-то в моделях, вам нужно перенести это вручную, используя следующую команду:

python manage.py makemigrations appname

python manage.py sqlmigrate appname 0001 #This value will come after makemigrations, it can be either 0001 or 0002 or 0003 and so on.

python manage.py migrate

Я предполагаю, что вы последовательно выполнили следующую команду.

  1. python manage.py makemigrations
  2. python manage.py migrate

Если вы получаете ошибки, связанные с миграцией, пожалуйста, внимательно прочитайте ошибку.

В основном этот тип ошибок, связанных с миграциями, возникает из-за несоответствия в вашем файле миграций. Это не совсем правильное решение, вы просто каждый раз сбрасываете свою базу данных. Прежде всего, вы должны быть более внимательны при написании моделей. Наконец, вы можете изменить ваш файл миграций, чтобы устранить несоответствие или перепроверить django_migrations таблицу с вашими перенесенными миграциями. Желаю удачи :)

Вернуться на верх