Version control 如何将数据库签入和签出svn(或git)

Version control 如何将数据库签入和签出svn(或git),version-control,git-svn,Version Control,Git Svn,目前,我进入phpMyAdmin,将数据库导出为文本文件,然后在将内容提交给svn(或git)之前将其与应用程序文件一起保存。当然,我必须把它导入生产 有更好的方法吗?取决于您使用的语言,RoR内置了它。目前,对于我在ASP.net MVC中进行的一个项目,我在一个文件夹中有两个文件:数据库。一个文件包含数据库的结构,另一个文件包含一些用于测试的虚拟变量。我必须说,这是一种很麻烦的共享数据库的方式,因为当您更新某些内容时,您必须让其他人知道他们必须重新运行(更新的)sql结构脚本 如果存在表,则

目前,我进入phpMyAdmin,将数据库导出为文本文件,然后在将内容提交给svn(或git)之前将其与应用程序文件一起保存。当然,我必须把它导入生产


有更好的方法吗?

取决于您使用的语言,RoR内置了它。目前,对于我在ASP.net MVC中进行的一个项目,我在一个文件夹中有两个文件:数据库。一个文件包含数据库的结构,另一个文件包含一些用于测试的虚拟变量。我必须说,这是一种很麻烦的共享数据库的方式,因为当您更新某些内容时,您必须让其他人知道他们必须重新运行(更新的)sql结构脚本

如果存在表,则结构脚本将删除这些表,并读取它们并添加新表


找不到比Ruby on Rails的db::migrate更好的方法。

通常,我会创建一个能够生成数据库(即所有表、用户、视图、索引等)的脚本和另一个用数据填充db的脚本。然后,使用DBDeploy(类似于RoRs迁移)处理所有数据库修改。然后,我将在Ant、NAnt、Buildr等中为所有这些脚本创建构建目标。通过这种方式,所有内容都是版本化的,并且是文本文件,因此它可以与任何SCM一起工作。

如果您正在寻找类似于db:migrate in Rails的迁移,但您不在Rails中,那么还有其他选项。有一个migrate4j类似于db:migrate,但是是用/for Java编写的。还有liquibase,它非常灵活且(AFAIK)独立于语言,但确实让您可以用XML编写所有内容(这与“Rails方式”相反)。

如果您没有Rails迁移之类的工具,请在java环境或其他任何环境中查看。如果你需要那么多的灵活性,那就很酷了。我们只跟踪设置整个数据库的.sql文件。

如果您查看ApacheODE,它们有一个Buildr的h2.rake任务,用于自动构建数据库进行测试

Rails迁移是惊人的。我的shell脚本(脚本)+git还不错,但在一辆生锈的福特车上开了几年后,迁移感觉就像升级到了梅赛德斯。