2016-06-01 5 views
0

テスト用に開発用データベースにのみデータを追加します。 はそうするために、私は次のようにtest_data.sqlがフォーマットされLiquibaseの前提条件は無視されます

<include file="./test_data.sql" relativeToChangelogFile="true"/> 

使用して含まれているtest_data.sql作成:

--liquibase formatted sql 

--changeset whiad-16453:testdata runOnChange:true failOnError:true endDelimiter:go stripComments:false 
--preconditions onFail:HALT onError:HALT 
--precondition-sql-check expectedResult:1 select case when db_name()='devdb' then 1 else 0 end 
insert into... 

は、私は、インサートのみ実行されることを期待し、ときselectは1を返します(Sybase Centralの方言で、Sybase Centralを使用してDev環境とProd環境の両方でクエリを実行し、期待通りに0または1を返します)。 しかし、Liquibaseはinsert(updateSQLコマンドライン引数を使用)を含むスクリプトを作成しました。施行し

<preConditions> 
    <sqlCheck expectedResult="1">select case when db_name()='devdb' then 1 else 0 end</sqlCheck> 
</preConditions> 
<include file="./test_data.sql" relativeToChangelogFile="true"/> 

しかし、この場合においても、インサート:

は、私が代わりにインクルードは変更履歴にファイルを含める前に右の前提条件を使用しようとしました。 私はまた私が条件で使用プロパティを使用してみました:

<changeLogPropertyDefined property="deploy_test_data" value="true"/> 

しかし、これはまた、任意の効果を持っていませんでした。

どうすればいいですか?

+0

どのバージョンのliquibaseを使用していますか? – Jens

+0

Liquibase 3.5.1 –

+0

expectedResultを1から0に変更するだけですか? – Jens

答えて

0

ここでは、 "contexts ==!testdata"をprodのパラメータとして渡すためのコンテキストを使用しました。

関連する問題