如何让两个开发数据库与Doctrine同步?

时间:2009-09-28 19:35:26

标签: php mysql doctrine

(如果需要,请进行此CW) 我们是两个开发基于Web应用程序的开发人员(PHP5,ZF,Doctrine,MySQL5)。我们每个人都使用本地Web服务器和本地数据库。数据库模式在YAML文件中定义。

保持数据库模式同步的最佳方法是什么?

以下是我们的工作方式:每当开发人员“A”进行更改时,他都会生成一个迁移类。然后他提交迁移文件开发人员“B”执行迁移类。

但是,在每次数据库更改时创建一个迁移类是一个相当繁琐的过程。

你有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

我不知道你如何在Zend Framework中使用Doctrine。以下是我在Symfony with Propel中的表现。虽然确切的程序可能会有所不同,但基本概念是相同的。

我在DAL上进行了单元测试。

每当架构发生变化时,我们都会检查yml和生成的ORM代码(你有源控件,不是吗)。我将办理登机手续设置为自动模式,这意味着我将立即办理登机手续。

如果架构更改不影响我的东西,那么我会忽略这些更改。但是如果架构更改破坏了我的东西,那么我将使用symfony propel build command重建我的表单,ORM类和诸如此类的东西。重建这些基础架构只是一个命令行,所以对我来说没有问题。

最后,在重建之后,我将运行我的单元测试,以确保一切正常。如果没有,我最好修好它们!

答案 1 :(得分:0)

我看到这个问题已经得到解答,但是Doctrine可以为您迁移数据库,而不必将整个事情吹走。我们将此用于每个架构更改,其中一个开发人员更改其本地yaml文件,在本地生成新模型,使用Doctrine创建迁移,在本地运行该迁移以更改数据库,然后检入新的yaml文件和迁移。然后,其他开发人员检查更改的yaml文件和迁移,然后生成新模型并运行迁移以同步其数据库。将代码部署到我们的QA和生产环境几乎是相同的过程。

有关Doctrine迁移的更多信息,请访问the Doctrine site