0

Java システム プロパティ 'type' の値に応じて、2 つの挿入のうちの 1 つを実行しようとしています。しかし、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 モードで実行できないことを警告します。

この問題は onSqlOutput="TEST" タグを追加することで解決されました。

于 2014-08-20T09:05:20.147 に答える