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?
Welche Version von Liquibase verwenden Sie? – Jens
Liquibase 3.5.1 –
Was passiert, wenn Sie nur das expectedResult von 1 auf 0 ändern? – Jens