Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否有在开发组中共享数据库SQL更改的标准?_Php_Mysql_Sql_Development Environment - Fatal编程技术网

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

Php 是否有在开发组中共享数据库SQL更改的标准?,php,mysql,sql,development-environment,Php,Mysql,Sql,Development Environment,我很好奇,是否有一个标准的或开放源码的应用程序,允许一小队开发人员共享MySQL数据库更新/修改脚本 现在所有的开发人员都有一个VM和他们自己的数据库实例,所以没有冲突,每个人都可以有单独的开发环境。当一个人进行数据库更改时,我们将SQL脚本添加到SVN中的SQL文本文件中,然后在必要时由每个开发人员在自己的环境中运行 我们遇到的问题是,当有人更新文件时,其他人运行脚本,然后我们添加其他更改。它变得非常混乱,如果有ALTERTABLE语句等,就会出现错误 我们不希望使用数据库复制,因为如果一个开

我很好奇,是否有一个标准的或开放源码的应用程序,允许一小队开发人员共享MySQL数据库更新/修改脚本

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

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

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

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


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

也许您想要的是迁移支持

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


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

也许您想要的是迁移支持

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


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

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

这甚至可以通过在数据库中使用元数据表来跟踪已运行的修补程序,并编写脚本来运行尚未运行的修补程序来实现自动化

Lorna Mitchell在博客中介绍了一些实现这一点的策略:


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

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

这甚至可以通过在数据库中使用元数据表来跟踪已运行的修补程序,并编写脚本来运行尚未运行的修补程序来实现自动化

Lorna Mitchell在博客中介绍了一些实现这一点的策略:


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

感谢您提供的信息,我们将使用这些概念,但对它们进行一些调整,以适应我们的平台。感谢您提供的信息,我们将使用这些概念,但对它们进行一些调整,以适应我们的平台。