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

Django 什么';在git分支之间维护数据库表字段的最佳方法是什么?,django,git,postgresql,Django,Git,Postgresql,我正在使用Django和Postgresql开发一个web服务 假设我们有3~4个分支,用于不同的功能或旧版本的错误修复 然后,我遇到了一个问题,当我在分支a中更改django模型,并在本地测试桌面上运行migrate to change database时 当我切换到另一个没有迁移文件的分支时,数据库将不一致并且无法工作。当我尝试运行django时,我必须删除数据库并重新创建它 一般来说,处理开发人员环境的此类需求的最佳/常见方法是什么?确保当您推到git时,包括您的迁移,当其他人拉动分支并执

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

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

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

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


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

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

这里的主要问题是,每次迁移时,您的数据库都会发生变化,因此您可以在不同分支之间保持数据库的一致性,也可以在使用/测试(声明所有模型后)时做一件事
1) 删除所有数据库表(如果您有备份或虚拟数据)
2) 删除分支中所有现有的迁移文件
3) 创建新迁移
4) 迁移到新的迁移

如果重新修改模型,也可以执行上述步骤,修改后只需重复这些步骤。

我非常了解您的情况,并且多次穿着同一双鞋

以下是我喜欢的(/做):

  • 我在分行
    bug修复/姓氏降级
    
    我更改了用户数据模型[它生成了
    user\u migration\u 005
    ],然后迁移了数据库。 然后我的老板来了,并指出,用户无法登录,因为登录降级

  • 所以我必须先切换分支并修复它

  • 我可以回滚刚才完成的迁移[
    user\u migration\u 005
    ]。使用类似于以下内容的
    python manage.py migrate user\u migration\u 004

  • 切换了分支并开始进行热修复/登录

  • 当我切换回上一个任务时,我可以只进行迁移并继续

  • 使用此过程,我不需要删除所有表或恢复旧数据库或诸如此类的内容


    我是一个新手,非常乐意听到你的想法。

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

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


    复制数据库并将其迁移。

    我同意这个答案。我会把问题看得更广。使用Git流策略是一种习惯做法(为每个特性保留单独的分支,并定期将它们合并到
    master
    )。查看基于主干的
    制定策略,您将减少分支之间的一致性问题。不要这样做。删除迁移通常不是一个好主意。在我的情况下,这可能会遇到另一个问题,当其他开发人员尝试提取迁移文件(我已完成上述步骤)时,他们将与其迁移冲突,并且必须再次删除数据库。如果更换型号非常频繁,这也是一种好方法吗?目前困扰我的是,我需要不时删除数据库。哦!我忘记了这种方式,所以我们必须在切换分支之前迁移到旧迁移,对吗?是的,您可以回滚任何迁移。数据库中存储的虚拟数据如何?如果向后滚动,会不会丢失?手动备份很烦人。