2016-06-01 23 views
0

Ich möchte einige Daten nur zur Entwicklungsdatenbank für Testzwecke hinzufügen. so zu tun, habe ich eine test_data.sql dieLiquibase-Vorbedingung wird ignoriert

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

Die test_data.sql wie folgt formatiert ist mit enthalten ist:

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

ich erwartet, dass der Einsatz nur dann ausgeführt wird, wenn Die Auswahl gibt 1 zurück (es ist ein Sybase SQL-Dialekt und ich habe die Abfrage sowohl in der Entwicklungs- als auch in der Prod-Umgebung mit Sybase Central ausgeführt und gibt 0 oder 1 wie erwartet zurück). Trotzdem erstellte Liquibase ein Skript mit den Einfügungen (mit dem updateSQL-Befehlszeilenargument).

Ich habe versucht, alternativ die Voraussetzung richtig zu verwenden, bevor die Datei im Changelog sind:

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

Aber auch in diesem Fall der Einsatz, wo perfomed. Ich habe versucht, eine Eigenschaft verwendet, die ich in der Bedingung verwenden:

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

Aber das hat auch keine Auswirkungen hatte.

Was mache ich falsch?

+0

Welche Version von Liquibase verwenden Sie? – Jens

+0

Liquibase 3.5.1 –

+0

Was passiert, wenn Sie nur das expectedResult von 1 auf 0 ändern? – Jens

Antwort

0

Ich habe jetzt den Kontext für meine Zwecke verwendet "contexts ==! Testdata" übergeben als Parameter auf prod.