检测到迁移,其中 makemigration/migrate 已经完成(并且数据库已更改已应用)



stack: Django/Docker/Postgresql

上个月,我对数据库模型进行了一些更改,并在 preprod 中进行了部署。

- remove fields 
- add fields
- alter one field constraint

一切似乎都是正确的,应用了更改并且应用程序正在运行。

昨天,我做了一些小的更改并重新部署,但是当我重新构建项目时,检测到新的迁移。 这些迁移与上述完全相同。 迁移失败,因为尝试删除不再存在的字段。

姜戈应用更新过程:

- 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只能在开发时运行,并且这些迁移必须提交到源代码管理。

相关内容

最新更新