想知道是否可以拥有MySQL数据库的版本控制。
我已经意识到这个问题之前已经被问过,但是最新的差不多是一年前的事情,而且事情发生了变化......
问题是,每个开发人员都在他们自己的计算机上有apache / MySQL / PHP,他们有时会编辑数据库。如果他们必须向所有其他开发人员发送电子邮件然后手动编辑测试服务器数据库,则相当不方便。
你如何处理这个问题?
由于
答案 0 :(得分:16)
这本身并不是与MySQL相关的解决方案,但我们在一款名为liquibase的产品上取得了很大的成功。 (http://www.liquibase.org/)
这是一个涵盖许多不同数据库供应商的迁移解决方案,允许所有数据库更改都在配置文件中编码,所有这些都保存在Subversion中。由于所有配置都保存在XML文件中,因此很容易将其他人的更改合并到主线脚本中,并且它可以很好地与标签和分支一起使用。
通过运行“update database”命令,可以将数据库升级到当前版本级别。大多数更改还能够回滚数据库更改,这也很有用。我建议遵循以下做法,确保在运行迁移之前获得最新信息,因为这可能是最简单的。
最后,当涉及到生产交付时,您可以选择将所有数据库更改输出为完整的SQL脚本,以便允许DBA运行它并保持职责分离。
到目前为止,它的作用就像一个魅力。
答案 1 :(得分:1)
我们使用Rails来保留迁移文件中的所有更改。我知道有几个PHP框架做同样的事情 - 例如Symphony。因此,当所有更改都合并到我们的存储库(我们用户mercurial)时 - 我们可以看到在开发中需要或应用于数据库的迁移中的所有更改。在完成备份后,负责生产的人员将代码生产到生产中。但是如果你不使用PHP框架来处理这个问题,那么awied的建议听起来很有意思 - 我之前没有听说过Liquidbase,但我肯定会检查出来。
答案 2 :(得分:1)
有一个名为iBatis的工具,现在称为MyBatis,可以完美地处理数据库版本。
在脚本中进行所有更改而不是使用图形工具需要一些工作,但是,如果您熟悉编码,那么这不是问题。
如果您有多个数据库(例如dev-test-prod),您只需创建3个环境文件,并且只需一条命令行指令即可更新一个环境。