2016-08-25 6 views
0

私はLiquiBaseを3.5.1(最新)を使用して、以下のチェンジセットを持っている:LiquiBaseを前提MARK_RAN有効でない

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<databaseChangeLog 
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd"> 

    <preConditions onFail="MARK_RAN"> 
     <sqlCheck expectedResult="2">SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo';</sqlCheck> 
    </preConditions> 
    <changeSet author="user" id="base"> 
     <sqlFile path="liquibase/base.sql"/> 
    </changeSet> 
</databaseChangeLog> 

は右、単に十分なようですか?自動的に生成されたLiquibaseテーブルの2つのテーブルをチェックしてDBが空であるかどうかを確認し、そうであれば基本スクリプトを実行するという考え方です。ただし、失敗した場合は、チェンジセットを実行済みとしてマークし、移動します(フィーチャーhereのドキュメント)。しかし、私は次のエラーを取得する:

Value 'MARK_RAN' is not facet-valid with respect to enumeration '[HALT, WARN]'. 
+0

チェックアウト私の答えは[こちら] (http://stackoverflow.com/a/39223493/332248)。簡単な答え:変更ログレベルでは 'MARK_RAN'は利用できません。チェンジセットのみ。 – Jens

答えて

0

LiquiBaseをは、チェンジ・レベルでの変更履歴レベル と前提条件で前提条件を区別します。 チェンジセットの外(チェンジログの先頭など)では、HALTとWARNのみが使用可能です。

のxsdを見schema

、2つのタイプがありますonChangeSetPreconditionErrorOrFailとonChangeLogPreconditionErrorOrFailは

次のようにあなたは自分のスクリプトを変更することができます。

<changeSet author="user" id="base"> 
    <preConditions onFail="MARK_RAN"> 
    <sqlCheck expectedResult="2">SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo';</sqlCheck> 
    </preConditions> 
    <sqlFile path="liquibase/base.sql"/> 
</changeSet> 

関連する問題