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