Django 什么';在git分支之间维护数据库表字段的最佳方法是什么?
我正在使用Django和Postgresql开发一个web服务 假设我们有3~4个分支,用于不同的功能或旧版本的错误修复 然后,我遇到了一个问题,当我在分支a中更改django模型,并在本地测试桌面上运行migrate to change database时 当我切换到另一个没有迁移文件的分支时,数据库将不一致并且无法工作。当我尝试运行django时,我必须删除数据库并重新创建它Django 什么';在git分支之间维护数据库表字段的最佳方法是什么?,django,git,postgresql,Django,Git,Postgresql,我正在使用Django和Postgresql开发一个web服务 假设我们有3~4个分支,用于不同的功能或旧版本的错误修复 然后,我遇到了一个问题,当我在分支a中更改django模型,并在本地测试桌面上运行migrate to change database时 当我切换到另一个没有迁移文件的分支时,数据库将不一致并且无法工作。当我尝试运行django时,我必须删除数据库并重新创建它 一般来说,处理开发人员环境的此类需求的最佳/常见方法是什么?确保当您推到git时,包括您的迁移,当其他人拉动分支并执
一般来说,处理开发人员环境的此类需求的最佳/常见方法是什么?确保当您推到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
)。查看基于主干的制定策略,您将减少分支之间的一致性问题。不要这样做。删除迁移通常不是一个好主意。在我的情况下,这可能会遇到另一个问题,当其他开发人员尝试提取迁移文件(我已完成上述步骤)时,他们将与其迁移冲突,并且必须再次删除数据库。如果更换型号非常频繁,这也是一种好方法吗?目前困扰我的是,我需要不时删除数据库。哦!我忘记了这种方式,所以我们必须在切换分支之前迁移到旧迁移,对吗?是的,您可以回滚任何迁移。数据库中存储的虚拟数据如何?如果向后滚动,会不会丢失?手动备份很烦人。