首页 > 解决方案 > Liquibase 继续执行错误

问题描述

我的要求如下

  1. 当我demo.sql使用Liquibase. 它由 10 个 sql 语句组成。
  2. 在第 5 条语句如果遇到错误,它应该完全回滚所有更改。

  3. 我的要求是继续它直到完成脚本并尝试提交其余有效的语句。

有什么解决办法吗?

标签: javadatabaseliquibaseliquibase-hibernate

解决方案


您应该向您添加preConditionsliquibase rollback脚本。

来自https://www.liquibase.org/documentation/changes/sql_file.html

<changeSet author="liquibase-docs" id="sqlFile-example">
    <preConditions onFail="MARK_RAN">
         <!-- your preconditions here -->
    </preConditions>
    <sqlFile dbms="h2, oracle"
            encoding="utf8"
            endDelimiter="\nGO"
            path="my/path/file.sql"
            relativeToChangelogFile="true"
            splitStatements="true"
            stripComments="true"/>
    <rollback>
        <!-- your rollback here -->
    </rollback>
</changeSet>

如果您想在第 5 条语句中特别demo.sql回滚,那么也许您可以将您的文件拆分demo.sql为两个文件并分别执行changeSets:第一个将包含语句 1-5,第二个将包含语句 6-10。


推荐阅读