同步PHP Git项目的MySQL结构

时间:2012-12-30 00:06:01

标签: php mysql git ubuntu wampserver

我最近学会了使用git,有一个很好的编辑器支持它,还有一个很好的钩子,可以在推送时将所有内容上传到实时站点。所以现在我有一个本地版本,一个开发测试版本和一个实时版本,一切都很棒。我无法找到的唯一问题是如何有效地在数据库之间同步MySQL结构。

我在扩展项目时经常遇到的两个场景是添加额外的列或创建新表。我经常通过phpmyadmin执行此操作,虽然我可以将给定的更改粘贴为SQL,但我努力寻求一种更有效的解决方案,而不是在3+存储库中复制粘贴。

目前这些是我考虑的方法,但我更喜欢效率更高的方法。

存储库:

  • 直播 - 服务器上的实时网站
  • 服务器上的dev - dev站点
  • 本地 - 计算机上的本地站点

方法#1

将phpmyadmin生成的所有SQL命令复制/粘贴到每个项目的数据库中。

  • 最终不是一个有效的解决方案

方法#2

以某种方式(确实激励我)用一个数组填充一个php文件,其中包含来自phpmyadmin的所有生成的SQL命令,然后从钩子中执行该php文件。我将其中一个服务器存储库中的所有结构更改完成,并从本地获取并合并为live,更改MySQL结构。

  • 会很整洁,但不完全确定如何执行它
  • 需要在ubuntu服务器和本地wampserver上工作

方法#3

通过MySQL的一些很好的解决方案,可以在服务器和本地工作。

  • 不知道这是怎么回事。

感谢您的时间,如果您知道更好的方法,请分享!我正在寻找能够实现目标的自动解决方案。

2 个答案:

答案 0 :(得分:1)

我意识到我使用的两个CodeIgniter似乎都有很好的方法来处理这个问题。不知道用Migration这个词搜索。

希望所有发现此问题的人都注意到这一点;关键字是数据库迁移以找到好的解决方案。

感谢关于指向哪里的评论。

答案 1 :(得分:1)

尝试http://www.liquibase.org/

我也看到了很好的迁移:http://www.yiiframework.com/doc/guide/1.1/en/database.migration

如果CodeIgniter支持这样的东西 - 它也很好。是的 - 我看到它的支持:上下两个。

如果可以使用迁移的man知道编程语言 - 那么可以使用框架中的工具。如果没有 - 那么最好像http://www.liquibase.org/

那样使用xml / config