Liquibase:changeLogPropertyDefined不起作用

时间:2014-08-19 09:26:30

标签: liquibase preconditions

我正在尝试根据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>

怎么了?是否有更好的工作方式?

1 个答案:

答案 0 :(得分:1)

来自liquibase forum的第一个nvoxland的回答:

  

...我们添加了onSqlOutput标记。 IGNORE只是假设了   前提条件无法应用,但你应该继续&#34;运行&#34;该   更新日志。 TEST意味着实际运行前提条件。失败意味着   停止执行更改日志,提醒您无法运行   在updateSql模式下,因为正确执行了precondtion   需要继续。

通过添加onSqlOutput =&#34; TEST&#34;解决了这个问题。标签。