我想让我的数据库处于版本控制之下.
我总是希望在其中至少有some个数据(正如alumb次提到的:用户类型和管理员).我还经常需要大量生成的测试数据集合来进行性能测量.
我如何将版本控制应用于我的数据库?
我想让我的数据库处于版本控制之下.
我总是希望在其中至少有some个数据(正如alumb次提到的:用户类型和管理员).我还经常需要大量生成的测试数据集合来进行性能测量.
我如何将版本控制应用于我的数据库?
马丁·福勒(Martin Fowler)写了一篇我最喜欢的关于这个主题的文章,http://martinfowler.com/articles/evodb.html.我 Select 不像alumb和其他人建议的那样将模式转储置于版本控制之下,因为我想要一种简单的方法来升级我的生产数据库.
对于只有一个生产数据库实例的web应用程序,我使用两种技术:
包含将架构从版本N移动到N+1所需的DDL的序列数据库升级脚本.(这些将放入您的版本控制系统中.)A_VERSION_HISTORY_TABLE,类似于
create table VersionHistory (
Version int primary key,
UpgradeStart datetime not null,
UpgradeEnd datetime
);
每次运行升级脚本时获取与新版本对应的新条目.
这确保了很容易看到存在什么版本的数据库模式,并且数据库升级脚本只运行一次.同样,这些是not个数据库转储.相反,每个脚本代表从一个版本移动到下一个版本所需的changes.它们是您应用于生产数据库以"升级"它的脚本.
A caveat: My automated tests run against a schema-correct but empty database, so this advice will not perfectly suit your needs.个