在源代码管理中存储MySQL数据库的最佳方法是什么?

时间:2010-01-14 19:33:23

标签: mysql database svn version-control

我正在与一些其他人一起开发应用程序,我们希望将MySQL数据库存储在源代码管理中。我的想法是两个有两个文件:一个是表的创建脚本等,另一个是我们的示例数据的插入。这是一个好方法吗?另外,导出这些信息的最佳方式是什么?

此外,有关加快更改,导出,更新等过程的工作流程的任何建议。

5 个答案:

答案 0 :(得分:3)

这听起来像是一个很好的方法。您可以根据表结构和数据区分各种修订。太好了!

创建转储的最佳方式可能是**mysqldump**,因为它可以轻松自动化 - 一次使用--no-data获取创建语句,一次使用--no-create-info --no-create-db获取数据。

答案 1 :(得分:3)

答案 2 :(得分:3)

这是我用于在Subversion下对MySQL数据库进行版本控制的过程。

设置SVN

在SVN中,为要添加到SVN的每个数据库创建一个带有子文件夹的Databases文件夹。

将db_version表添加到数据库

我们需要为每个数据库添加一个表,以便我们知道我们当前使用的数据库版本。该表还将用作跟踪对数据库进行了哪些模式更改的日志。

create table db_version (
        `id` int auto_increment,
        `majorReleaseNumber` int,
        `minorReleaseNumber` int,
        `pointReleaseNumber` int,
        `scriptName` varchar(50),
        `dateApplied` datetime,
        PRIMARY KEY(`id`)
);

majorReleaseNumber - 主要版本是对数据库的重大更改。

minorReleaseNumber - 次要版本是对数据库的增强,无需主要版本。

pointReleaseNumber - 点发布通常是一个简单的错误修复。

scriptName - 使架构更改的sql脚本的名称。

dateApplied - 在此数据库上运行脚本时。

创建基线脚本

我使用mysqldump为现有数据库生成创建脚本。请务必包含--no-data选项。 SVN用于跟踪对数据库进行架构更改的脚本,而不是用作应用程序特定实例的数据的备份工具。

$ mysqldump -h localhost -u root -p db_1 --no-data > db_1.1.0.0.sql

sql脚本的名称应包含数据库的名称以及脚本适用的数据库版本。

db_1.1.0.0.sql

在脚本结束时,请确保为db_version表添加插入语句。

更改数据库架构

当您对数据库进行主要,次要或点发布更改时,应测试更改脚本,然后将其上载到SVN中的数据库文件夹。在应用更改脚本之前备份数据库是个好主意。在更改脚本的末尾应该是db_version表的插入语句。

答案 3 :(得分:2)

我在使用Microsoft source safe和Oracle / Sql Server的环境中工作。

我们发现在单独的文本文件中保存每个包/过程,创建表脚本等是最好的方法。这意味着在维护包时,开发人员只需签出他们需要的1个包等。一旦进行了更改并进行了测试,就可以签入它们。

答案 4 :(得分:1)

你肯定有正确的想法。这里有几篇关于这个主题的好文章: