首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一段时间内在后勤基地获得变化

如何在一段时间内在后勤基地获得变化
EN

Stack Overflow用户
提问于 2012-12-07 16:51:21
回答 1查看 773关注 0票数 0

我可以用液化库来改变我的数据库的模式,它很好。但是我需要在一段时间内得到变更集,例如

代码语言:javascript
复制
1/1: add table1 => 1.0
1/10: add table2
1/18: alter table1 => 2.0
1/21: alter table2 
1/28: add table3 => 3.0

如果我想从1/10~1/28或1/18~1/21得到一个变更集(SQL命令),这有可能吗?

更新感谢Mark的回复,我在我们的开发环境中添加了上述变更集的版本。当我们的生产数据库在1.0中时,我想直接升级到2.0 (或3.0),但只想使用液化库生成SQL命令并手动运行。

回滚有一个问题,如果我回滚我的开发数据库,我需要重新创建已经在它上的数据。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-12-08 09:34:41

我建议阅读命令行文档

要根据日期生成SQL,我认为可以这样做的唯一方法是:

代码语言:javascript
复制
liquibase rollbackToDate <date/time> 
liquibase tag <version so can rollback here again>
liquibase updateSQL > keepUpdate.sql
liquibase update

更新

您想要做的事情(使用SQL更新生产)是一个常见的用例,清算库是用来支持的。这是我最喜欢的特征之一。

问题是..。在一个理想的世界里,你应该能够吹掉你开发的数据库,从零开始。很明显,你没有清算基础的变更集来管理你的数据,所以需要考虑一些替代方案.

方法1:创建一个新的DEV数据库

运行一个SQL查询,并确定开发DB上有多少个变更集:

代码语言:javascript
复制
SELECT ORDEREXECUTED, DATEEXECUTED, ID, FILENAME, DESCRIPTION, COMMENTS 
FROM DATABASECHANGELOG 
ORDER BY ORDEREXECUTED

分析日期,并确定从3.0版到2.0版(2个变更集)和1.0版(4个变更集)需要多少个chnagesets

创建一个新的数据库并应用您的液化基变更集,将您的模式提升到修订3.0

代码语言:javascript
复制
liquibase update

创建SQLforVersion2.0 -> 3.0升级

代码语言:javascript
复制
liquibase rollbackCount 2
liquibase updateSQL         > upgrade-2_0-3_0.sql
liquibase futureRollbackSQL > rollback-2_0-3_0.sql

并创建SQL1.0版本-> 3.0升级版。

代码语言:javascript
复制
liquibase rollbackCount 2
liquibase updateSQL         > upgrade-1_0-3_0.sql
liquibase futureRollbackSQL > rollback-1_0-3_0.sql

方法2:使用dbunit保存数据集

另一个非常有用的数据库管理工具是迪布尼特

以下文章解释了如何将液化基和dbunit一起用于迁移数据库:

  • http://www.poornerd.com/2010/12/07/database-migration-with-liquibase-and-dbunit/

这两种工具是相辅相成的。在您的情况下,也许您可以定期保存开发数据的管理单元,并使用它重新填充开发或测试数据库(显然,dataset对db模式的版本很敏感,因此需要注意)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13767445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档