2009-11-23 80 views
30

想知道是否有可能拥有MySQL数据库的版本控制。MySQL版本控制 - Subversion

我意识到这个问题已经被问过,不过最新的几乎是一年前,在事物的变化率...

的问题来了,每个开发者都有自己的Apache/MySQL的/ PHP他们有时编辑数据库的计算机。如果他们不得不发送电子邮件给所有其他开发人员,然后手动编辑测试服务器数据库,则会很不方便。

你如何处理这个问题?

感谢

+0

你也有DBV:http://stackoverflow.com/a/13837473/6309 – VonC 2012-12-12 10:19:11

回答

15

这本身不是一个MySQL相关的解决方案,但我们已经有很多成功的一个产品叫liquibase。 (http://www.liquibase.org/

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

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

最后,当它涉及到生产交货,你可以选择让所有的数据库改变输出作为一个完整的SQL脚本,因此它可以允许DBA运行和维护职责分离。

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

+0

这看起来像一个很好的解决方案 - 非常感谢你! – user103219 2009-11-23 17:32:19

+0

你也可以使用maatkit,它是内置于很多Linux发行版中的。这是一个小工具刀,maatkit,它并没有在自身和其他程序之间建立依赖关系。 – 2012-07-01 02:37:37

+0

真的很酷的方法。 – funktioneer 2015-01-12 16:23:41

1

那么我们使用Rails来保留迁移文件中的所有更改。我知道一些PHP框架可以做同样的事情 - 例如Symphony。因此,当所有更改合并到我们的存储库(我们用户mercurial)时 - 我们可以看到开发中需要或应用于数据库的所有迁移变化。完成备份后,生产负责人会将代码投入生产。但是,如果你不使用一个PHP框架来处理这个问题,awied的建议听起来很有趣 - 我以前没有听说过liquidbase,但我一定会检查出来。

1

有一种称为iBatis的工具,现在称为MyBatis,可以完美地处理数据库版本。

需要一点努力才能在脚本中进行所有更改,而不是使用图形工具,但是如果您熟悉编码,则不会出现问题。

当您有多个数据库(如dev-test-prod)时,只需创建3个环境文件,并且只需一条命令行指令即可更新一个环境。