用于跟踪DB结构更改的正确工具

时间:2010-06-07 11:59:03

标签: php tracking

现在我有一个PHP项目,我跟踪SVN代码中的所有更改。 我还想跟踪数据库结构中的更改。

哪种工具适合使用?

5 个答案:

答案 0 :(得分:2)

我通常使用脚本化数据库转储解决这个问题,包含表定义和您可能感兴趣的所有其他内容。如果您的数据库不是太大,这甚至会处理您的数据。

对于更系统化的方法,您可以查看Liquibase。我自己没有尝试过,所以不能评论实际的可用性,但似乎它可能是一个非常有价值的数据库版本工具。

答案 1 :(得分:1)

通常我会在安装过程和测试阶段使用php脚本创建数据库结构。

我发现将它直接放到跟踪整个项目的svn存储库中非常有用(您可以自动更改链接到代码库的更改)。

答案 2 :(得分:1)

有各种工具可以跟踪数据库结构的变化。

一个非常好的是mysql Workbench:http://www.mysql.com/products/workbench/

您可以使用此工具对数据库进行建模,以便能够通过同步更新它。

另一种我最适合svn的工具:PHP迁移

http://code.google.com/p/mysql-php-migrations/

使用此工具可以创建不同的脚本:例如001_initial.php 002_changes.php。

当您执行该工具时,它将应用未应用的文件以使您的架构更新。

我希望这可以帮到你。

答案 3 :(得分:0)

对于数据库更改,我们已经(已经,不再在那里工作)VCS中的目录:

+ dbchanges
|_ 01_database
|_ 02_table
|_ 03_data
|_ 04_constraints
|_ 05_functions
|_ 06_triggers
|_ 07_indexes

当您对数据库进行更改时,将更改放在.sql文件中,并将当前日期和时间作为文件名放入正确的目录中。如果要更新数据库,请运行集成脚本,按顺序遍历这些目录,并将每个更改导入数据库。

目录以这种方式命名,以确保脚本的运行顺序正确。 (因此,尝试将数据插入表中的脚本将不会在创建所述表的脚本之前运行)

sql文件必须以注释开头,注释会在集成脚本导入更改时显示给用户,并描述它的作用。它将每个导入的sql文件的名称记录到一个文件中,因此下次运行该脚本时,它不会再次应用相同的更改。

缺点是,这不支持回滚,因为你必须存储操作的反转,对于某些操作,这是不可能的,比如DELETE。另一个缺点是,如果您以某种方式丢失了跟踪已应用更改的文件,则必须从头开始重新创建数据库。

答案 4 :(得分:0)

看看Liquibase。

这是一个非常好的数据库变更管理软件。 但实施起来有点困难。

- 伊尔沙德。