把MySQL数据库置于版本控制之下?

时间:2011-02-03 08:14:23

标签: mysql database version-control

我目前正在为我的PHP项目使用SVN。我当时认为我的数据库也应该受版本控制,但最好的办法是什么?我只是在我的SVN项目中创建一个db-folder,将SQL更改粘贴到名为from_1.0_to_2.0.sql的文件中并提交?

6 个答案:

答案 0 :(得分:31)

请注意,最近(2012年12月),您还有另一种选择: DBV (DataBase Version)

它基于此Github project,是一个数据库版本控制Web应用程序,具有模式管理,修订脚本等功能。

database schema

答案 1 :(得分:19)

每当您对数据库进行更改时,都应该在迁移中保存这些更改,然后您可以在更新代码的同时在其他服务器上运行这些更改。但你基本上得到了正确的想法。您可以编写一些工具来使其更加自动化;例如,对每个文件进行版本控制,然后在数据库中创建一个类似migration_version的表,该表将包含当前版本的数据库。然后,您可以创建一个迁移脚本,该脚本将运行使数据库保持最新所需的所有迁移。

请注意,如果您需要双向数据库版本控制(以便您也可以恢复到以前的数据库版本),则还需要为每个版本编写所需的查询。

还有一些工具可以帮助您编写迁移,例如MySQLdiff

答案 2 :(得分:13)

结帐

Liquibase

http://www.liquibase.org/quickstart

这个想法是这样的:

  

所有数据库更改都以人类可读但可跟踪的形式存储,并检入源代码管理。 - Liquibase.org首页

这是一款非常出色的软件,允许您对数据库进行版本控制,与最高评级答案的过程大致相同,不同之处在于此轮已经编写好并且已准备就绪。我在工作中使用它,这是一个很棒的解决方案。如果你想了解它是如何工作的,那就自己实现它,但如果你想要一个工具来完成工作,Liquibase可以很好地工作。

答案 3 :(得分:1)

您可以使用MySQL Workbench tool

使用建模工具生成的文件可以保存在SVN下。 该工具允许您以双向方式将数据库与模型同步。

答案 4 :(得分:0)

Laravel中的迁移 - PHP框架似乎非常有用,但有一个很大的优点。在Laravel ORM语言中只有用于设计模式的在线工具,名为" Eloquent" (here)。因此,如果您需要设计和维护某个严肃项目的数据库,它仍然无法使用。

答案 5 :(得分:0)

kdbv 可能有帮助 它将你的mysql数据库从旧版本升级到当前的最新版本而不跟踪mysql表格中的变化