【问题标题】:Database and version control system数据库和版本控制系统
【发布时间】:2010-09-16 16:34:54
【问题描述】:

我正在使用 django 框架进行项目,并使用控制版本系统将我的代码与其他人同步。但我不知道如何组织数据库。 在 django 中,任何参与项目的人都可以更改 django 模型,并告诉“syncdb”将模型对象与 db 同步。 但是其他人不知道这个变化,它的代码修订可能不起作用。 请告诉我一些解决此问题的方法(可能是不同的数据库或其他)。

谢谢,请原谅我的英语:)

【问题讨论】:

    标签: database version-control django-models project-management


    【解决方案1】:

    您必须与项目中的人员进行实际交谈。

    如果有人更改了任何数据库模型,他们必须实际告诉其他人有关更改的信息。这不是 Django 问题。

    想想任何没有 Django 的 SQL 数据库。当 DBA 删除表时,他们必须告诉所有人他们更改了数据库。否则所有使用表格的程序都会中断。

    模型定义很特殊,谁能改变它就必须告诉其他人。

    【讨论】:

      【解决方案2】:

      听起来你想要迁移。

      例如: http://www.aswmc.com/dbmigration/

      您可能还想添加实际测试架构是否符合预期的功能单元测试,这样当测试失败时,您可以看到这是架构更改,并审核它是否会影响应用程序的其他部分.如果不是,请修复您的测试以考虑新架构。

      【讨论】:

      • syncdb 就是这样做的。他的问题是程序员忘记运行它。
      • 听起来他们有一个现有的数据库转储,当架构更改时,他们的数据库变得不一致。听起来他想要一种方法来确保数据库保持一致......这个迁移+功能测试。功能测试迫使用户主动找出问题所在。
      【解决方案3】:

      您必须拥有受版本控制的数据库的初始备份。之后,您必须将所有修改脚本放在同一个版本控制上。像这样的:

      /数据库(在存储库中)

      • 初始备份
      • Script1_date.sql
      • Script2_date.sql

      ...

      【讨论】:

      • 这本质上是数据库迁移。
      【解决方案4】:

      我不确定你的问题;但请记住,在 Django 上,syncdb 只创建新表。它不会改变现有的表。

      例如,如果您只是添加一个新字段,则同步数据库不会做任何事情。

      【讨论】:

        【解决方案5】:

        我很好奇...如果您将 MDF 和 LDF 文件置于源代码控制之下会发生什么?当然,如果你的表是空的,而你只有数据库的结构......

        【讨论】:

        • MDF 是二进制文件,因此您无法真正区分它们以查看修订版之间的更改...
        【解决方案6】:

        实际上,在查看替代方案时,我经常惊讶于没有人提到南方

        http://south.aeracode.org/

        它似乎是目前最好的迁移应用程序......也许我遗漏了一些重要的东西,但我发现它很好用......

        【讨论】:

          【解决方案7】:

          还可以看看 deltasql。 你可以在http://www.gpu-grid.net/deltasql 测试它(用户名:admin 密码:testdbsync) 并从http://sourceforge.net/projects/deltasql下载 ciao :-)

          【讨论】:

            猜你喜欢
            • 2018-06-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-25
            • 1970-01-01
            • 2011-01-31
            相关资源
            最近更新 更多