Обнаружены миграции, когда 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
должны только выполняться во время разработки, и эти миграции должны быть зафиксированы в системе контроля исходного кода.