2016-12-20 12 views
2

私は、繰り返し実行可能なフライウェイ移行を使用しています。移行.sqlコードのコメントに$ {TRIGGER_DATA_UPDATE}のようなプレースホルダーの値を入れました。これは、flyway.conf(またはflyway.confを変更するbashスクリプト)からこのプレースホルダー値を変更し、繰り返し実行できるようにすることです。プレースホルダが変更された場合、繰り返し可能なフライウェイ移行は実行されません。

私が見た限りでは、プレースホルダを変更しても、繰り返し実行可能な移行は再開されません。一度だけ実行されます。チェックサム計算でプレースホルダの値が考慮されていないかのように見えます。

これは機能またはバグですか?

逆に、反復可能な移行内でコメントを直接編集すると、変更が検出され、移行は次のflywayの呼び出しで実行されます。ここで

は繰り返し移行.SQLファイルです:

-- The following line will trigger execution of this script appropriately when upgrade.shis executed 
    /* ${TRIGGER_DATA_UPDATE} */ 
    UPDATE restcomm_accounts SET password = auth_token, password_algorithm = 'md5' WHERE password IS NULL; 

TRIGGER_DATA_UPDATEはプレースホルダー値です。

そしてここflyway.confの重要な部分である:

flyway.placeholders.TRIGGER_DATA_UPDATE=this_part_changes 

答えて

0

あなたは正しいです、チェックサムの計算は、ファイルの内容(のみ)です。これは設計によるものです。 SqlMigrationResolver.java

これをcallbackに入れて、条件付きで実行できる可能性があります。私はあなたがコマンドライン上にいると仮定して(あなたがbashを言いました)、それはafterMigrate.sqlに入れられます。データベースのプログラミング言語(PLSQLなど)を使用するか、whereステートメントを使用して創造的にする必要があります。コールバックが記録されるようにデバッグ(-X)をオンにしてください。移行は実際に移行を実行していない(つまり保留中ではない)場合でも実行されます。

次のことを試してみてください。

-- The following line will trigger execution of this script appropriately when upgrade.shis executed 
UPDATE restcomm_accounts SET password = auth_token, password_algorithm = 'md5' WHERE password IS NULL 
AND '${TRIGGER_DATA_UPDATE}' = 'Y' 
; 
関連する問題