我想知道你们如何在Zend Framework环境中工作,尤其是如何使数据库表与其他团队保持同步(数据库变更管理)。我有一个在他们家工作的小团队,我们每次都需要有最新的数据库表。我们在家工作,所以有时我们在办公室完成主要工作后工作。
有什么想法吗?
ps:就像Rails迁移一样
答案 0 :(得分:4)
我们正在使用phing的数据库部署功能来跟踪数据库随时间的变化并在我们的开发人员之间更新数据库。我们还使用它来部署我们的应用程序的新版本,通常包括数据库更新。
基本上每次有人需要更新数据库方案时,他都会添加一个数据库迁移脚本。然后,每个开发人员都可以运行phing来自动执行这些db迁移脚本。
有关详情,请参阅此处的主题指南:http://www.davedevelopment.co.uk/2008/04/14/how-to-simple-database-migrations-with-phing-and-dbdeploy/
答案 1 :(得分:2)
Rob Allen(@akrabat)开发了一个特定于ZF的迁移工具:
Akrabat_Db_Schema_Manager: Zend Framework database migrations
原则上,它类似于dbdeploy
中的Phing
工具。在Rob的Schema Manager
中,每个delta文件都包含一个方法up()
和down()
的类,它们分别执行db模式的升级和降级。
它附带了一个基于Zend_Tool
构建的命令行工具,可以执行特定的迁移,报告当前的模式版本等。
更新(由@ markus-tharkun建议)
我创建了一个基于Rob原创作品的数据库迁移工具,它使用的是vanilla PDO
而不是Zend_Db
。该工具被称为“South For the Winter”,所有者(Diamond Web Services / StartupDevs)已在Github上发布了代码:https://github.com/startupdevs/sftw
答案 2 :(得分:1)
我看到Harrie Verveer去年在PHPNW上就这个主题进行了一次非常有趣的讨论。总结如下:
http://techportal.inviqa.com/2011/01/11/database-version-control/
他得出的主要结论是,这个问题目前没有灵丹妙药。
我已经看到补丁系统在大型项目上可怕地失控,但在小型项目上完美运行。您选择的方法很大程度上取决于团队规模,项目规模和数据库更改频率。这是一个容易在小型项目上进行过度设计的问题,因此请注意您在解决方案中投入了多少工作。