Django协作开发中数据库迁移不同步引发ProgrammingError的解决与预防
Django协作开发数据库迁移不一致问题的解决与预防
一、问题发生后的应急处理步骤
- 先停下手头开发操作,拉取最新代码:
git pull - 执行迁移命令同步数据库表结构:
python manage.py migrate - 若迁移时出现冲突:
- 如果你本地有未提交的迁移文件,先备份本地数据库(比如用
python manage.py dumpdata导出数据),再回滚到上一个可用的迁移版本:python manage.py migrate <你的app名称> <迁移版本号>,拉取最新代码后重新调整开发内容 - 若本地迁移文件已完成但未提交,先将迁移文件提交到版本库,合并远程代码后重新执行迁移
- 如果你本地有未提交的迁移文件,先备份本地数据库(比如用
- 迁移完成后重启本地开发服务器,验证功能是否正常,确认
ProgrammingError: Column not exist报错消失
二、团队规范流程避免重复踩坑
- 改模型必带迁移文件:每次修改模型字段后,必须执行
python manage.py makemigrations生成对应迁移文件,和模型代码一起提交到版本库,禁止只提交模型代码遗漏迁移文件 - 拉代码先做迁移:每次拉取远程代码后,先执行
python manage.py migrate再启动开发服务器。可以把这个步骤写到项目README里,甚至编写简单脚本(比如start_dev.sh)将拉代码、迁移、启动服务器的命令整合,团队成员直接运行脚本即可 - 迁移冲突统一处理:如果多人修改同一模型导致迁移文件冲突,先手动合并迁移内容(确保字段修改逻辑正确),重新生成迁移并本地测试无误后再提交
- 每日同步数据库状态:团队成员每天开工前,先拉取最新代码并执行迁移;每周固定时间做一次全团队数据库同步检查,避免问题积累
- 本地数据库隔离:每个人使用自己的本地数据库,不共用开发服务器数据库,避免一人修改表结构影响全团队。若需使用共用测试环境,安排专人负责维护测试库的迁移同步,或用CI/CD工具在代码提交后自动执行迁移更新测试库
内容的提问来源于stack exchange,提问作者Lodye
相关产品推荐
相关产品推荐

