2010-12-13 41 views
4

来自Ruby on Rails的世界,我正在寻找一种有效的方式来版本化我的数据库(在rails的情况下,迁移服务于此目的)。用yii php框架保持数据库版本的最佳方法是什么?

目前我正在拍摄数据库的快照并在常规基础上导出整个模式,但整个过程非常手动。

有没有更好的方法来做到这一点?

p.s.我正在使用mysql。

+0

我不知道任何有关PHP和那个世界上有什么可用。但是您始终可以使用liquibase,它以平台不可知的方式(使用Java编写)启用数据库版本控制,回滚等。 – 2010-12-13 16:46:21

+0

我想在这里更多地了解你想要完成的事情。你只是用一个主数据库的模式更新其他数据库?如果是这样,多少? MySQL数据库服务明确提供了从服务器的机制,这些服务器订阅了所有的更改,然后将复制主服务器上的所有操作。你不需要PHP来实现它。 – zanlok 2010-12-13 17:59:45

+0

zanlok,我没有试图部署从服务器。 db版本控制系统有很多好处。例如,开发人员/代码分支之间的协调更容易,并且保持对数据库模式更改的引用。任何类型的手动过程都容易出现人为错误。在这个时代,我认为应该有很多系统能够自动跟踪你的变化并且记录它们。 – etang 2010-12-14 15:19:32

回答

4

在Yii 1.1.6中会有数据库迁移概念。这将允许我们使用PHP代码以数据库不可知的方式进行数据库操作。有关更多详细信息,请参见http://code.google.com/p/yii/issues/detail?id=1191

+0

+1对于酷的提示。我们目前使用基于dbdeploy的自己的工具(当时我们需要它的实现真的是****,所以我们自己写了)。这对我们非常有用。虽然一定会在1.1.6正式发布的时候检验Yii的实现:) – Blizz 2011-01-05 08:06:53

+0

我在考虑使用Doctrine项目提供的迁移功能。然而,“开箱即用”解决方案总是很好 – galymzhan 2011-01-05 10:01:03

0

基本上:。不是用PHP的东西。

无论其 ...调和方案,如从SHOW CREATE <table_name>;命令,仍然是你在说什么有关的可靠方法 - 如果本质上是相当平凡的。如果要检测并复制模式定义,必须非常了解模式定义机制的细节。不过,您可以自由开发专业领域,以跟踪更新架构时更新的版本号。然后,至少您会知道何时需要更新其他复制目标 - 通过比较该版本字段中的数据。

我通常看到这种实现的方式是跟踪所有ALTER TABLE命令(等)并跟踪它们。您可以将一个'r12345.sql'文件像SVN一样检入一个自动执行数据库更新的系统。它涉及到了,但我的意思是说,一个php脚本可以检查所有数据库模式.sql文件并执行每个数据库(系列),这些数据会将更改回放到当前数据库中。

很大程度上取决于你想要完成什么。如果你提供更多的信息,我会解释。

相关问题