【问题标题】:Liquibase Continue on Error ImplementationLiquibase 继续执行错误
【发布时间】:2018-05-24 06:07:09
【问题描述】:

我的要求如下

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

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

任何解决方案 那个?

【问题讨论】:

  • 尽管有一个 sql statemet 失败,但仍想运行脚本!!!
  • 基本上我想继续执行脚本,即使 10 个语句中的一个也容易出错,如果文件中的一个语句出错,它应该跳过那个,但应该执行其余的是否可以使用 liquibase 注意:我不想将一个 sql 文件作为一个事务执行,即仅在一个变更集中执行。谢谢,如果有什么方法请建议

标签: java database liquibase liquibase-hibernate


【解决方案1】:

您应该将preConditionsrollback 添加到您的liquibase 脚本中。

来自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>

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

【讨论】:

  • 谢谢,但想继续脚本,尽管在一个语句中出现错误,是否有任何方法不应该回滚整个变更集,尽管发生了变化!!!
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2020-01-14
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多