我正在尝试根据Java系统属性“type”的值执行两个插入中的一个。但是当我运行updateSQL时,它会生成两个插入条目,尽管有价值甚至存在变量'type'。这是我的变更集:
<!--changes for CS only-->
<changeSet id="57" author="mborodin">
<preConditions onFail="CONTINUE">
<changeLogPropertyDefined property="type" value="cs"/>
</preConditions>
<sql>INSERT INTO cs.config(key, value) values('autochecks.findProfilesInDb', 'true'),
('web.type', 'cs'), ('globalFailureDetectorEnabled', 'true');
</sql>
</changeSet>
<!--changes for LCS only-->
<changeSet id="58" author="mborodin">
<preConditions onFail="CONTINUE">
<and>
<changeLogPropertyDefined property="type" value="lcs"/>
<not>
<changeSetExecuted
id="57"
author="mborodin"
changeLogFile="${changeLogFile}"
/>
</not>
</and>
</preConditions>
<sql>INSERT INTO cs.config(key, value) values('autochecks.findProfilesInDb', 'false'),
('web.type', 'local-cs'), ('globalFailureDetectorEnabled', 'false');
</sql>
</changeSet>
怎么了?是否有更好的工作方式?
答案 0 :(得分:1)
来自liquibase forum的第一个nvoxland的回答:
...我们添加了onSqlOutput标记。 IGNORE只是假设了 前提条件无法应用,但你应该继续&#34;运行&#34;该 更新日志。 TEST意味着实际运行前提条件。失败意味着 停止执行更改日志,提醒您无法运行 在updateSql模式下,因为正确执行了precondtion 需要继续。
通过添加onSqlOutput =&#34; TEST&#34;解决了这个问题。标签。