是否有在开发组中共享数据库SQL更改的标准



我很好奇是否有一个标准或开源的应用程序可以让一小部分开发人员共享MySQL数据库更新/修改脚本?

现在,所有的开发人员都有一个带有自己数据库实例的虚拟机,所以没有冲突,每个开发人员都可以有单独的开发环境。当进行DB更改时,我们将SQL脚本添加到SVN中的SQL文本文件中,然后在必要时由每个开发人员在自己的环境中运行。

我们遇到的问题是,当有人更新文件时,其他人运行脚本,然后我们添加其他更改。如果有ALTER表语句等,它会变得非常混乱,并且我们会出现错误。

我们不想使用数据库复制,因为如果一个开发人员破坏了他们的数据库,我们不希望其他人受到影响。

我们使用ExpressionEngine,我注意到他们使用PHP来检查/验证SQL更新,这是我们需要走的方向吗?

还有人处理这个问题吗?如果是,你最终使用了什么?

一个相当简单的解决方案是有一个目录,而不是一个文件。然后,每次开发人员进行更改时,他们都会在目录中添加一个"补丁文件"。其他开发人员可以通过运行任何尚未运行的补丁来更新数据库。

这甚至可以通过在数据库中设置一个元数据表来跟踪哪些补丁已经运行,并编写一个脚本来运行任何没有运行的补丁来实现。

Lorna Mitchell在博客中谈到了一些策略:

http://www.lornajane.net/posts/2010/simple-database-patching-strategy

http://www.lornajane.net/posts/2012/taking-on-a-database-change-process

评论是完整的,或者人们推荐各种工具来帮助这个过程。就我个人而言,我只是有一个相当简单的脚本,不需要更大的库,但你的经验可能会有所不同。

也许您想要的是迁移支持。

然后,您将迁移代码放入您使用的任何CVS中,每个团队成员在其框上迁移(即运行迁移脚本),这将同步所有数据库。

我使用的框架(yii)支持它,但如果你不想把整个框架带过来,我很确定有一些独立的解决方案。

最新更新