在开发人员之间同步数据库模式

时间:2009-04-23 22:27:03

标签: database cakephp

我正和其他几个人一起开展一个项目。我们都有该项目的本地副本,也通过svn repo不断更新。

因为我们处于开发的早期阶段,所以我们经常更改数据库的架构。当我们同步代码时,这会导致很多问题,因为我们没有很好的方法来同步我们的数据库模式。

有哪些直观且简单的方法可以同步频繁更改的数据库架构?

我们正在与CakePHP合作(不确定这是否有助于我找到好的解决方案)。

修改

在CakePHP中找到一些工具来完成这类工作: http://book.cakephp.org/view/734/Schema-management-and-migrations

这是一个额外的网站: http://bakery.cakephp.org/articles/view/cake-db-migrations-v2-1

5 个答案:

答案 0 :(得分:2)

数据库迁移是保持工作数据库同步的简便方法。本质上,迁移是将数据库更新为最新模式并使用正确数据填充新表的脚本,因此它们保持有效状态。

迁移提供的功能很少:

  • 自动创建/更新表的工具。这些工具可以跟踪架构版本以及需要运行的脚本。
  • 一些迁移工具提供了运行代码(c#,ruby等)而不是sql脚本的能力。迁移工具提供的代码库通常能够更好地抽象数据库相关部分,并使数据库脚本更加独立于数据库。

Ruby有一些工具(迁移是Rails的重要组成部分),C#和Java。当然,还有其他语言。

有很多关于迁移的questions here,我建议您搜索适合您工具链的迁移工具。

答案 1 :(得分:1)

Joel Moss的

CakePHP Database Migrations是目前最好的解决方案。

来自github的项目描述:

  

CakePHP 1.2的数据库迁移是CakePHP控制台支持的shell脚本,它允许您管理数据库模式而无需触及一点SQL。它基于Ruby on Rails实现的迁移,并使用Pear的MDB2包,因此支持所有支持的数据库。

     

您可以将迁移视为数据库的版本控制系统。它的强大功能非常适合作为团队的一部分进行开发,因为每个成员都可以保留自己的应用程序数据库的独立副本,并使用迁移来更改其模式。所有其他成员必须这样做,就是运行一个简单的双字shell命令,并且他们的数据库副本与其他人的数据库副本是最新的。

     

迁移shell将为您要进行的每个数据库更改生成一个迁移文件。此文件可包含任意数量的数据库更改。

答案 2 :(得分:1)

Github上的Cake 2.x兼容插件:

https://github.com/CakeDC/migrations

答案 3 :(得分:0)

这是使用Git的一个很好的例子,但无论如何同样适用于SVN。 http://thewebandthings.synodicsolutions.com/2009/06/13/cakephp-versioning-database-changes-with-git/

答案 4 :(得分:0)

我已经开始了一个小项目,我们用它来在开发人员之间同步数据库并部署到生产环境。它仍然处于早期阶段,但它已被证明有效,它还没有很多文档。

http://code.google.com/p/php-mysql-version-control/