我试图根据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>
怎么了?有更好的方法吗?
选自liquidbase论坛第一个nvoxland的回答:
我们添加了onSqlOutput标签。IGNORE只是假设不能应用前置条件,但是您应该继续"运行"更新日志。TEST表示实际运行前置条件。失败的意思是停止更改日志的执行,提醒您无法运行在updateSql模式中,因为正确执行前提条件是需要继续。
这个问题已经通过添加onSqlOutput="TEST"标签解决了。