2011-08-08 11 views
0

私はliquibase 1.9.5を使用していますが、このバージョンの既知のバグではありません。簡単な話は、私たちが1.0リリースのためにliquibaseを正常に実行したことです.1.0リリースのmd5sumについて追加のchangeSetを持つ1.1リリースを実行しようとするとエラーになります。liquibase changeSets

私たちは短期間にDATABASECHANGELOGのmd5sum列を無効にすることで取り組みましたが、私はちょうど何か間違っているのだろうかと思っています。

次のように私たちはLiquiBaseをを整理:私たちは(正しい順序で)私たちのソフトウェアのバージョンごとに別々のファイルのためのコマンドがあり、すべての展開、上で実行 つのマスター.xmlファイルを

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd"> 
    <include file="v1_0.xml" /> 
    <include file="v1_1.xml" /> 
</databaseChangeLog> 

最初のリリースにはv1_0.xmlしか含まれていませんでした。

v1_0.xmlファイルがリリース間で変化しなかったが、新しいリリースのLiquiBaseをを起動しようとしたとき、私たちは、次のエラーを得た:

SEVERE: Validation Failed: 
    1 change sets check sum 
     v1_0.xml::foo_schema::bdeacon::(MD5Sum: ff63b8d1739e6cf1dcaed6a0ef585257) 

チェンジ質問に:

<changeSet author="bdeacon" id="foo_schema"> 
    <preConditions onFail="MARK_RAN"> 
     <not><tableExists tableName="some_table"/></not> 
    </preConditions> 
    <sqlFile path="database/initial/foo-schema.sql" /> 
</changeSet> 

参照されるfoo-schema.sqlファイルも、リリース間で変更されませんでした。

liquibaseは、私たちが手動でvalidCheckSum要素を間にあるすべてのchangeSetに追加することを期待していないことを願っています。(これは、私たちのデータベーススキーマ全体を最初に作成したもので、前提条件の "some_table"リリース...

答えて

1

changeSetまたはsqlファイルの内容が変更されない限り、validCheckSumを追加する必要はありません。

foo-schema.sqlで変更される可能性のあるSVNのバージョン番号や空白/改行などはありますか?

+1

validCheckSumトリックは機能しましたが、あなたは正しいです。チェックサムを投げ捨てていたSQLファイルには美的な変化がありました。空白ではありませんでしたが、実際に気付くにはsvn diffが必要でした。 –

0

"runOnChange" changeSet属性をtrueに設定できます。その場合、チェンジセットによって参照される任意のSQLファイルが変更されるたびに、チェンジセットが再度実行され、チェックサムが更新されます。 liquibase docのChangeSet Check Sumsセクションを参照してください。これは、パッケージ/プロシージャ/トリガコードが "CREATE OR REPLACE"のような文を使用している場合に便利です。この場合、 ".. already exists"エラーを避けるために、drop文でSQLファイルの呼び出しを先行する必要はありません。

関連する問題