django 项目中的数据库迁移 migrations 文件在开发环境和部署环境中有必要保持一致吗?为什么?

开发环境中随着模型文件的修改会生成许多 migrations 文件在项目中。

那么这些文件有必要随着项目同步到部署环境中吗?

因为开发环境和部署环境中数据库并不同,那么在部署环境中执行下面这些命令,项目中因为开发环境中生成的 migrations 文件会对这些操作带来什么影响?


python manage.py makemigrations
python manage.py migrate

相关:Django 的 migtarion 冲突处理

阅读 4.6k
1 个回答

官方推荐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是应用上述迁移文件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题