在 git 分支之间维护数据库表字段的最佳方法是什么?



我正在使用Django和Postgresql开发web服务。

假设我们有3~4个分支,用于不同的功能或旧版本的错误修复。

然后,我遇到了一个问题,当时我在分支a中更改django模型,并在本地测试桌面上运行migrate以更改数据库。

当我切换到另一个没有迁移文件的分支时,数据库将不一致,当我尝试运行django时无法工作,我必须删除数据库并重新创建它。

一般来说,处理这种对开发人员环境的需求的最佳/常见方法是什么?

我很了解你的情况,也曾多次处于同一种境地。

这是我喜欢的(/做的(:

  1. 我在分支bug-fix/surname_degrade我更改了用户数据模型[生成了user_migration_005],然后迁移了数据库。然后我的老板来了,指出由于登录降级,用户无法登录。

  2. 所以我必须先切换分支并修复它。

  3. 我可以回滚迁移[user_migration_005],这是我几分钟前完成的。像这样的python manage.py migrate user_migration_004

  4. 切换分支并开始在hot-fix/login_degrade上工作

  5. 当我切换回以前的任务时,我可以进行迁移并继续。

通过这个过程,我不需要删除所有表或恢复旧数据库或类似的东西。

我是一个新手,听到你的想法会非常高兴。

这里的主要问题是,每次迁移时,数据库都会发生变化,所以要么在不同分支之间保持数据库的一致性,要么只做一件事,使用/测试时(在声明所有模型后(
1(删除所有数据库表(如果有备份或伪数据(
2(删除分支中的所有现有迁移文件
3(创建新迁移
4(迁移到新迁移
如果模型被重新修改,也可以执行上述步骤,修改后只需重复这些步骤。

在每个分支中运行不同的测试数据库。

当你分叉设计时,分叉数据库

对数据库进行克隆并迁移。

确保当您推送到git时,包括您的迁移,当其他人拉取分支并执行migratedjango时,您知道对数据库进行了哪些更改。

相关内容