Liquibase: changeLogPropertyDefined不起作用



我试图根据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"标签解决了。

相关内容

  • 没有找到相关文章

最新更新