2011-08-02 27 views
7

既存のスキーマからchangelog.xmlを生成する方法を読んだことがあります。それは問題ありませんが、新しい変更を加える以外は、私が触れたくない既存のシステムがあります。私はまた、すべての変更が適用されることを要求する全く新しいシステムを持っています。既存のスキーマでliquibaseを使用する

したがって、私はliquibaseに、既存のシステムで実行しているときにチェンジセットXからの移行のみを実行したいと考えています。私。そのシステムのDBはリビジョンX-1です(但し、liquibase sysテーブルはありません)。先行する移行は適用されません。

多くのおかげで、 パット

答えて

2

は、私が最も簡単な最初は空のデータベース上で初期セットアップを実行し、DATABASECHANGELOGテーブルに挿入ないエントリ(IES)LiquiBaseををエクスポートすることだと思います。次に、これらのエントリをエクスポートし、ターゲットデータベースの1つに手動でDATABASECHANGELOGテーブルに挿入します。したがって、liquibaseはそこで再び「変更」を実行しません。もちろん、私がテストして、すべてのものをテストしたい

が...テストマシン上でダンプ:)

+0

非常に簡単です。私はそれをテストします。ありがとう。 – pat

+0

それはうまくTommyd、おかげで働いた。インポートスクリプトからチェックサム値を削除すると、liquibaseはこれを再度計算するためにデータベースにあるものを使用することに注意してください。重要なことは、DBにchangelogエントリを持たせることです。素晴らしいもの。 – pat

+0

助けになるのはうれしいです。 –

14

このLiquibase forum thread

  1. にコメントとして私は、少し異なるアプローチをお勧めします既存のスキーマから変更履歴を生成します。 liquibaseのCLIはあなたのためにそれを行うことができます。私は通常、結果として得られたXMLを取り出し、それを少し滑らかにします(単一の変更ログにグループ関連の変更、ベンダー固有のクリーンアップなどを行います)。しかし、Liquibaseはほとんどの作業を行います。

  2. 既存のデータベース(changelogSyncコマンド)に対する変更ログを実行しますが、実際にはスキーマを変更することなく、適用済みとマークするだけです。

  3. は、その時点から新しい変更を適用するためにliquibaseを使用します。

+2

ステップ2(Liquibase 2.x)で使用するコマンドは 'changelogSync'です。 –

+0

ありがとう、antispamとJavid。それは知って良いです。 – pat

関連する問題