【发布时间】:2015-04-16 13:04:26
【问题描述】:
Liquibase 无法在没有更改日志文件的情况下回滚 a。 运行回滚时需要提供原始的变更日志/变更集文件。
我的问题是:有没有办法在没有文件的情况下运行回滚?
例如:将文件(或回滚命令)存储在 databasechangelog 表中?
【问题讨论】:
标签: liquibase
Liquibase 无法在没有更改日志文件的情况下回滚 a。 运行回滚时需要提供原始的变更日志/变更集文件。
我的问题是:有没有办法在没有文件的情况下运行回滚?
例如:将文件(或回滚命令)存储在 databasechangelog 表中?
【问题讨论】:
标签: liquibase
您可以使用 Liquibase 的“未来回滚 SQL”功能。它以几种不同的方式暴露出来。
Liquibase.futureRollbackSQL(...)
SpringLiquibase.setRollbackFile(...)
mvn liquibase:futureRollbackSQL
<liquibase:rollbackFutureDatabase outputfile="/path/to/rollback-future.sql".../>
liquibase futureRollbackSQL
如果您将此功能与 update 或 updateSQL 结合使用,那么您将能够在没有原始更改日志的情况下回滚更新。
【讨论】:
据我所知,liquibase 从变更集中即时生成回滚命令(在可能的情况下)。
所以它总是需要更改日志文件来执行此操作。
我不认为有一个简单的解决方案可以做到这一点。 liquibase 的重点是将变更集保存在单独的文件中,因此您可以将它们放在某种版本控制系统中。
【讨论】: