代码之家  ›  专栏  ›  技术社区  ›  codebrew

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

  •  0
  • codebrew  · 技术社区  · 8 年前

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

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

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

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

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

    4 回复  |  直到 8 年前
        1
  •  2
  •   Umair Mohammad    8 年前

    我很了解你的情况,而且几次都穿着同一双鞋。

    以下是我比较喜欢的(/do):

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

    2. 所以我得先换一个分支然后修好它。

    3. 我可以回滚迁移[ 用户迁移 ]我刚才也做过。带着这样的东西 python manage.py migrate user_migration_004

    4. 切换分支并开始处理 hot-fix/login_degrade

    5. 当我切换回上一个任务时,我可以执行迁移并继续。

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

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

        2
  •  1
  •   toddler95    8 年前

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

        3
  •  1
  •   Jasen    8 年前

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

    分叉设计时,分叉数据库

    克隆数据库并迁移它。

        4
  •  0
  •   Oh Great One    8 年前

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