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 中所有更改日志文件的先决条件的主要内容,如果未能解决你的问题,请参考以下文章
Liquibase 无法找到用于 4.0 及更高版本的集成测试的更改日志文件