Liquibase 对 sql 中所有更改日志文件的先决条件

Posted

技术标签:

【中文标题】Liquibase 对 sql 中所有更改日志文件的先决条件【英文标题】:Liquibase preconditions to all changelog file in sql 【发布时间】:2020-01-16 17:26:39 【问题描述】:

我想对我的 SQL changeLogFile 中的每个 changeSet 运行 SQL 前置条件检查。其实是changeLog本身的前提条件

这是它的摘录:

--liquibase formatted sql

--preconditions onFail:HALT onError:HALT
--precondition-sql-check expectedResult:"1.0" SELECT VERSION FROM VERSION_TABLE;

--changeset bob:1 failOnError:true dbms:oracle
ALTER INDEX XXX RENAME TO YYY;
--rollback YYY RENAME TO XXX;

即使实际上不遵守前提条件,liquibase 仍会运行所有变更集。

有人知道这是否是我这边的错误,还是 liquibase 不允许对 SQL changeLog 文件的整个 changeLog 设置先决条件?

提前致谢!

【问题讨论】:

documentation 表示前提条件仅适用于每个变更集。所以我想这是不可能的。 嗨,好的,谢谢你的回答,我依赖于我在这里读到的内容:liquibase.org/documentation/preconditions.html 谢谢 【参考方案1】:

如果您仔细阅读文档,则说明我们只能在特定更改集上应用先决条件。此外,仅支持 SQL Check 前提条件。

用于 sql 更改日志文件的 Liquibase 文档 - https://www.liquibase.org/documentation/sql_format.html

【讨论】:

【参考方案2】:

您可以做的一件事是拥有一个 XML/YAML/JSON 格式的***主变更日志,然后使用 <include><includeAll> 元素来包含您的 liquibase 格式的 sql 变更日志。如果你这样做,那么你可以有更改日志级别的先决条件。

【讨论】:

以上是关于Liquibase 对 sql 中所有更改日志文件的先决条件的主要内容,如果未能解决你的问题,请参考以下文章

sql 当Liquibase因取消运行而无法获取更改日志时

如何使用 jar 文件中的 Liquibase 更改日志

Liquibase 校验和验证失败

Liquibase 无法找到用于 4.0 及更高版本的集成测试的更改日志文件

使用 H2 数据库和 Liquibase 配置 Spring Boot

liquibase - 变更集的执行顺序