我可以用液化库来改变我的数据库的模式,它很好。但是我需要在一段时间内得到变更集,例如
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命令并手动运行。
回滚有一个问题,如果我回滚我的开发数据库,我需要重新创建已经在它上的数据。有什么建议吗?
发布于 2012-12-08 09:34:41
我建议阅读命令行文档。
要根据日期生成SQL,我认为可以这样做的唯一方法是:
liquibase rollbackToDate <date/time>
liquibase tag <version so can rollback here again>
liquibase updateSQL > keepUpdate.sql
liquibase update更新
您想要做的事情(使用SQL更新生产)是一个常见的用例,清算库是用来支持的。这是我最喜欢的特征之一。
问题是..。在一个理想的世界里,你应该能够吹掉你开发的数据库,从零开始。很明显,你没有清算基础的变更集来管理你的数据,所以需要考虑一些替代方案.
方法1:创建一个新的DEV数据库
运行一个SQL查询,并确定开发DB上有多少个变更集:
SELECT ORDEREXECUTED, DATEEXECUTED, ID, FILENAME, DESCRIPTION, COMMENTS
FROM DATABASECHANGELOG
ORDER BY ORDEREXECUTED分析日期,并确定从3.0版到2.0版(2个变更集)和1.0版(4个变更集)需要多少个chnagesets
创建一个新的数据库并应用您的液化基变更集,将您的模式提升到修订3.0
liquibase update创建SQLforVersion2.0 -> 3.0升级
liquibase rollbackCount 2
liquibase updateSQL > upgrade-2_0-3_0.sql
liquibase futureRollbackSQL > rollback-2_0-3_0.sql并创建SQL1.0版本-> 3.0升级版。
liquibase rollbackCount 2
liquibase updateSQL > upgrade-1_0-3_0.sql
liquibase futureRollbackSQL > rollback-1_0-3_0.sql方法2:使用dbunit保存数据集
另一个非常有用的数据库管理工具是迪布尼特。
以下文章解释了如何将液化基和dbunit一起用于迁移数据库:
这两种工具是相辅相成的。在您的情况下,也许您可以定期保存开发数据的管理单元,并使用它重新填充开发或测试数据库(显然,dataset对db模式的版本很敏感,因此需要注意)
https://stackoverflow.com/questions/13767445
复制相似问题