0

我正在尝试根据 Java 系统属性“类型”的值执行两个插入之一。但是当我运行 updateSQL 时,它会生成两个插入条目,尽管有值,甚至存在变量“类型”。这是我的变更集:

 <!--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>

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

4

1 回答 1

1

来自liquibase 论坛上第一个 nvoxland 的回答:

…我们添加了 onSqlOutput 标签。IGNORE 只是假设不能应用前提条件,但您应该继续“运行”changeLog。TEST 表示实际运行前提条件。FAIL 意味着停止更新日志的执行,提醒您不能在 updateSql 模式下运行,因为需要正确执行 precondtion 才能继续。

通过添加 onSqlOutput="TEST" 标签解决了这个问题。

于 2014-08-20T09:05:20.147 回答