2011-07-11 11 views
0

私は2つのファイルを持っています:db構造とdbデータのSQLファイル。 (私たちはまだalterファイルを作成しているプロジェクトの一部ではありません)。飛行機 - ドロップdb、dbを作成

mavenを使用して変更されたファイルがある場合は、その前にこれらのファイルを実行することができますか?

私が持っている唯一のアイデアは、飛行機がそれを拾うことを確実にするために、それぞれの変更後にファイルの名前を変更することです。

もっとスマートな方法がありますか?おそらくAPIやその他の「トリック」を使用していますか?

おかげ

--MB

答えて

6

あなたはフライウェイを使用することができますSQLスクリプトが実行されたときにCRC32チェックサムが計算され、各SQLの移行について次のように構成

validationMode=ALL 
validationErrorMode=CLEAN 

に移行します。バリデート・メカニズムは、クラスパス内のsql移行で、データベース内ですでに実行されているsql移行と同じチェックサムが引き続き存在するかどうかをチェックします。

validationErrorMode = CLEANは、開発の便宜のためにのみ使用されています。移行スクリプトがSCMにチェックインされて実行されると、移行スクリプトを変更しないことを強くお勧めします。これは、このケースをスムーズに処理する方法を提供します。データベースは自動的に消去され、次の移行によってSCMにチェックインされた状態に戻ります。

この設定は、API、maven pluginまたはcommand lineから使用できます。

+0

ありがとう、それは完璧です –

0

新しいフライウェイを使用すると、ファイルの変更のチェックサムまたはバージョンテーブルが欠落している場合は、すべてを削除するには

flyway.setInitOnMigrate(true); 
flyway.setCleanOnValidationError(true); 
flyway.setValidateOnMigrate(true); 

を使用します。

+0

この場合、initOnMigrateの必要はありません。それは既存のデータベースのみです。 –

+0

はい、スキーマが空でない場合は必須です。実際には、バージョンテーブルを作成するよう強制されます(とにかく)。それはちょっと危険だと思うけど、IT部門では通常使いたいと思っているものだ。 – eckes

+0

問題が言いましたように、dbは変更後に清掃し、再移住する必要があります。それがきれいになったら、initを呼び出す必要はありません。 –

関連する問題