2009-09-28 161 views
1

(如果需要,可以创建此CW) 我们是两个开发基于Web应用程序(PHP5,ZF,Doctrine,MySQL5)的开发人员。我们每个人都有一个本地网络服务器和一个本地数据库。数据库模式在YAML文件中定义。如何让两个开发数据库与Doctrine同步?

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

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

但是在每个数据库更改上创建一个迁移类是一个相当乏味的过程。

你有更好的解决方案吗?

回答

1

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

我对我的DAL进行了单元测试。

每当架构更改,我们在阳明和生成的ORM代码检查(您有一个源头控制,没有你)。我将登机手续设置为自动模式,这意味着我将立即获得所有登机手续。

如果模式更改不会影响我的事情,那么我会忽略这些更改。但是,如果模式更改会破坏我的东西,那么我将通过使用symfony propel build command来重建我的表单,ORM类和其他类。重建这些基础设施只是一个命令行的事情,所以对我来说没有任何问题。

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

+0

在你的设置中,你有你自己的本地数据库副本吗?如果是,每当模式更改时,重新从头开始重建数据库的本地副本? – 2009-10-07 13:24:09

+0

是的,这两个问题 – Graviton 2009-10-07 13:53:05

0

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

有关Doctrine迁移的更多信息可在the Doctrine site上找到。