我正在与一些其他人一起开发应用程序,我们希望将MySQL数据库存储在源代码管理中。我的想法是两个有两个文件:一个是表的创建脚本等,另一个是我们的示例数据的插入。这是一个好方法吗?另外,导出这些信息的最佳方式是什么?
此外,有关加快更改,导出,更新等过程的工作流程的任何建议。
答案 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)
你肯定有正确的想法。这里有几篇关于这个主题的好文章: