我正在使用Django和Postgresql开发web服务。
假设我们有3~4个分支,用于不同的功能或旧版本的错误修复。
然后,我遇到了一个问题,当时我在分支a中更改django模型,并在本地测试桌面上运行migrate以更改数据库。
当我切换到另一个没有迁移文件的分支时,数据库将不一致,当我尝试运行django时无法工作,我必须删除数据库并重新创建它。
一般来说,处理这种对开发人员环境的需求的最佳/常见方法是什么?
我很了解你的情况,也曾多次处于同一种境地。
这是我喜欢的(/做的(:
-
我在分支
bug-fix/surname_degrade
我更改了用户数据模型[生成了user_migration_005
],然后迁移了数据库。然后我的老板来了,指出由于登录降级,用户无法登录。 -
所以我必须先切换分支并修复它。
-
我可以回滚迁移[
user_migration_005
],这是我几分钟前完成的。像这样的python manage.py migrate user_migration_004
-
切换分支并开始在
hot-fix/login_degrade
上工作 -
当我切换回以前的任务时,我可以进行迁移并继续。
通过这个过程,我不需要删除所有表或恢复旧数据库或类似的东西。
我是一个新手,听到你的想法会非常高兴。
这里的主要问题是,每次迁移时,数据库都会发生变化,所以要么在不同分支之间保持数据库的一致性,要么只做一件事,使用/测试时(在声明所有模型后(
1(删除所有数据库表(如果有备份或伪数据(
2(删除分支中的所有现有迁移文件
3(创建新迁移
4(迁移到新迁移
如果模型被重新修改,也可以执行上述步骤,修改后只需重复这些步骤。
在每个分支中运行不同的测试数据库。
当你分叉设计时,分叉数据库
对数据库进行克隆并迁移。
确保当您推送到git时,包括您的迁移,当其他人拉取分支并执行migrate
django时,您知道对数据库进行了哪些更改。