【问题标题】:MySQL Version Control - SubversionMySQL 版本控制 - 颠覆
【发布时间】:2010-12-19 12:32:41
【问题描述】:

想知道是否可以对 MySQL 数据库进行版本控制。

我知道这个问题之前已经被问过,但最新的几乎是一年前,而且事情正在发生变化......

问题来了,每个开发人员在他们自己的计算机上都有 apache/MySQL/PHP,他们有时会在这些计算机上编辑数据库。如果他们必须向所有其他开发人员发送电子邮件,然后手动编辑测试服务器数据库,则相当不方便。

你如何处理这个问题?

谢谢

【问题讨论】:

标签: mysql svn version-control workflow


【解决方案1】:

这本身并不是一个与 MySQL 相关的解决方案,但我们已经在一个名为 liquibase 的产品上取得了很大的成功。 (http://www.liquibase.org/)

这是一个涵盖许多不同数据库供应商的迁移解决方案,允许将所有数据库更改编码到配置文件中,所有这些都保存在 Subversion 中。由于所有配置都保存在 XML 文件中,因此很容易将其他人的更改合并到主线脚本中,并且可以很好地与标签和分支配合使用。

可以通过运行“更新数据库”命令将数据库升级到当前版本级别。大多数更改还具有回滚数据库更改的能力,这也很有帮助。我建议遵循在运行迁移之前确保您获得最新的做法,因为这可能是最简单的。

最后,在生产交付方面,您可以选择将所有数据库更改输出为完整的 SQL 脚本,以便 DBA 运行它并保持职责分离。

到目前为止,它就像一个魅力。

【讨论】:

  • 您也可以使用 maatkit,它内置在许多 Linux 发行版中。它是一个小工具,maatkit,它不会在自己和其他程序之间建立依赖关系。
【解决方案2】:

我们使用 Rails 来保存迁移文件中的所有更改。我知道有几个 PHP 框架做同样的事情——例如 Symphony。因此,当所有更改都合并到我们的存储库中时(我们使用 mercurial) - 我们可以看到迁移中需要或已应用于开发中的数据库的所有更改。在进行完整备份后,负责生产的人员将代码推出到生产环境中。但是,如果您不使用可以解决此问题的 PHP 框架,awied 的建议听起来很有趣——我以前没有听说过liquidbase,但我一定会去看看。

【讨论】:

    【解决方案3】:

    有一个工具叫做 iBatis,现在叫做 MyBatis,可以完美地处理数据库的版本。

    在脚本中而不是使用图形工具进行所有更改需要一些工作,但是,如果您熟悉编码,这不是问题。

    当你有多个数据库(如 dev-test-prod)时,你只需制作 3 个环境文件,你可以只用一个命令行指令更新一个环境。

    【讨论】:

      猜你喜欢
      • 2010-12-24
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多