質問

私が作成した LiquiBaseをの上のクイックスタート(:)非常にダム)チェンジ後

コード:

<?xml version="1.0" encoding="UTF-8"?>

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

    <changeSet id="1" author="me">
        <createTable tableName="first_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
        </createTable>
        <createTable tableName="new_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
        </createTable>
    </changeSet>

</databaseChangeLog>

私はきれいなスキーマを作成したと私はmigrateコマンドを立ち上げました。

LiquiBaseをサポートテーブルdatabasechangelogと..lockで、データベースを作成します。

今、私は変更を追跡することができますか?私は新しいのcreateTable要素を追加するチェンジセットを変更したが、私はコマンドを実行しようとすると、「更新」LiquiBaseをは、

この私に語りました
Migration Failed: Validation Failed:
     1 change sets check sum

私はLiquiBaseをと連携する方法を理解しているとは思わないようにします。

誰かが??正しい方向に私を指すことがあります。

おかげ

役に立ちましたか?

解決

あなたはすでに実行された<changeSet>を変更することはありません。 LiquiBaseをすべて実行チェンジのためのチェックサムを計算し、ログに格納します。その後、そのチェックサムを再計算し保存されたものと比較してチェックサムが異なる場合は、それを次回実行時に失敗します。

あなたが代わりに行うに必要なものは、を別の<changeSet>を追加し、その中にあなたの新しいのcreateTable要素を置くことです。

、クイックスタートは良いreadin'ですが、それは迅速な:-)マニュアルのrel="noreferrer">フルチェンジのセクションます。

他のヒント

この現在受け入れ答えは少しLiquiBaseを2.xの変化に基づいて期限が切れています2.xのバージョンでは、MD5チェックサムがチェンジのために変更された場合LiquiBaseを、まだ失敗しますが、あなたがそれを変更できるようにしたい場合は、をrunOnChange の属性を指定することができます。

ドキュメントのから:

  

runOnChangeする - 変化にそれが

見られるたびに変更セットが変更された最初の時間を実行し
そのチェンジのためにそのMD5は新しいものと一致するように

それは基本的にはすでに行われているチェンジセットへの変更だ場合は、データベースを手動で変更することができます。マイナーテキストの変更のために良いです。それとも、あなたのテーブルからそのチェンジ行を削除することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top