我在开发项目中使用SVN有很少的经验,并且在关系数据库方面的经验也很少。我知道诸如表和SQL语句之类的基本概念,但我远非专家。

我想知道的是,如果有任何诸如SVN之类的通用版本控制类型系统,但是可以与数据库而不是文件一起使用。我希望您使用SVN获得的同样类型的功能,例如创建分支,创建标签并将分支合并在一起的能力。而不是与文件存储库版本关联的修订号,它将与数据库的版本关联。

他们是否可用任何可以添加此类功能的通用解决方案,而与实际数据库架构无关?我对与MySQL或MS SQL Server一起使用的解决方案感兴趣。

我还应该澄清,我正在尝试版本控制数据,而不是模式。我希望模式保持恒定。因此,实际上,我似乎想要一种创建所有插入,更新和删除请求的日志的方法,该请求发送了每个版本之间的数据库。这样,可以通过将所有已保存到所需版本保存的SQL语句重新创建任何版本。

有帮助吗?

解决方案

您可以将所有DDL,存储过程等脚本脚本脚本到常规文本文件中。

然后,您可以将SVN用于数据库版本。

其他提示

我从来没有找到过像颠覆和颠覆的解决方案,但是我所做的一些事情有所帮助:

  1. 制作将创建模式并填充任何初始数据的脚本。然后为每个更改进行更新脚本。这是一个相当手动的过程,但它起作用。有额外的事情有助于将当前版本编号存储在数据库中的表格中,并确保脚本为 愿意.

  2. 将完整的开发数据库存储在颠覆中。如果有很多数据或经常更改,通常对我来说这不太好。但是在某些项目中可能有效。

我在我的版本控制系统中保留并维护创建脚本。

我可以想到两件事:

  • http://www.liquibase.org/ - 提供一种通常管理数据库更改的方法。创建将投入到源控制中的文件,并有助于管理不同开发数据库的更改,等等。
  • http://www.viget.com/extend/backup-your-database-ingit/ - 这描述了将数据库备份到源控制中的策略,但是仅在模式上使用相同的策略。在此方案中,数据库将与主代码不同。 (这也可以与其他源控制系统一起使用。)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top