Обнаружены миграции, когда makemigrations/migrate уже выполнены (и изменения в базе данных уже применены)

стек: Django/Docker/Postgresql

В прошлом месяце я внес некоторые изменения в модели базы данных и развернул их в preprod.

- remove fields 
- add fields
- alter one field constraint

Все кажется правильным, изменения были применены и приложение запущено.

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

Процедура обновления приложения Django:

- sudo docker-compose -f docker-compose.preprod.yml down -v
- git pull
- sudo docker-compose -f docker-compose.preprod.yml up -d --build --remove-orphans #<= error raise
- sudo docker-compose -f docker-compose.preprod.yml up

entrypoint.sh

#!/bin/sh

if [ "$DATABASE" = "postgres" ]
then
    echo "Waiting for postgres..."

    while ! nc -z $SQL_HOST $SQL_PORT; do
      sleep 0.1
    done

    echo "PostgreSQL started"
fi

python manage.py makemigrations --noinput
python manage.py migrate

exec "$@"

Ваша точка входа не должна содержать makemigrations. Если вы использовали это в производстве, вам может быть плохо (т.е. в вашей производственной базе данных будут миграции, которых больше нигде не будет).

makemigrations должны только выполняться во время разработки, и эти миграции должны быть зафиксированы в системе контроля исходного кода.

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