开发环境中随着模型文件的修改会生成许多 migrations 文件在项目中。
那么这些文件有必要随着项目同步到部署环境中吗?
因为开发环境和部署环境中数据库并不同,那么在部署环境中执行下面这些命令,项目中因为开发环境中生成的 migrations 文件会对这些操作带来什么影响?
python manage.py makemigrations
python manage.py migrate
开发环境中随着模型文件的修改会生成许多 migrations 文件在项目中。
那么这些文件有必要随着项目同步到部署环境中吗?
因为开发环境和部署环境中数据库并不同,那么在部署环境中执行下面这些命令,项目中因为开发环境中生成的 migrations 文件会对这些操作带来什么影响?
python manage.py makemigrations
python manage.py migrate
1 回答1.1k 阅读✓ 已解决
1 回答777 阅读✓ 已解决
1 回答673 阅读✓ 已解决
1 回答644 阅读
635 阅读
官方推荐migrations放到版本控制中。
因为migrations相当于你的数据库的版本控制,可以保证开发环境跟产品环境的数据库一致。https://docs.djangoproject.com/en/1.10/topics/migrations/。
在开发中可能会生成很多的migrations,我的做法是在提交的时候把migrations全部discard,然后运行python manage.py makemigrations`重新生成一份最终版的migrations,如果没有强迫症,那么略过我的做法。
产品环境中因为版本控制中有最新提交的migrations,所以部署脚本中不需要运行
python manage.py makemigrations
,直接运行python manage.py migrate
就好。PS:
python manage.py makemigrations
命令是生成你model中变动对应的数据库迁移的文件。python manage.py migrate
是应用上述迁移文件。