2017-10-10 6 views
1

私は現在、Flywayコマンドラインツールを使用して、私たちのCIビルドサーバからトリガされたリリースプロセスによって呼び出されるスクリプトを管理しています。Flywayの移行から繰り返し可能なスクリプトを削除する最良の方法

問題は、パッケージ仕様、パッケージ本体、関数、プロシージャー、ビュー、マテリアライズド・ビューを含む274回のマイグレーションが繰り返されていることです。

移行を実行すると、すべての移行が予想どおりに動作し、それに続いて変更可能な繰り返し可能な移行が行われますが、次のリリースでは、繰り返し可能な移行が維持するオブジェクトを削除します。たとえば、私たちは、ProcedureOne(つまりR__ProcedureOne.sql)を定義した繰り返し可能なスクリプトを削除したいと考えています。

これを実行するには、新しい移行スクリプト(V3.1.5.1.01__DropProcedureOne.sql)が必要ですが、繰り返し作成できる移行スクリプトも削除して、オブジェクトを再度作成して管理しないようにします。

ただし、フライウェイ情報を実行すると、ステータスがMISSINGのR__ProcedureOne.sqlスクリプトが表示されます。

私はそれが欠けていることに同意しますが、誤った配置に反対する必要はなくなるため、意図的に削除することを了承しています。

私はmigrateオプションignoreMissingMigrationsを認識していますが、これを使用するとリスクが発生し、本物の不足しているファイルを隠す可能性があります。

反復可能なスクリプトを削除する最良の方法についての一般的なガイダンスは何ですか?

答えて

0

ファイルを保存しておくだけで空にしておくことをお勧めします(つまり、ゼロバイト)。あるいは、ファイル内に、それが表すオブジェクトが削除されたことを説明するコメントを付けることもできます。

これを実際に削除する方法として、繰り返し可能な移行を更新して自分自身を削除し、次にゼロの長さに更新する方法があります。これには、空のデータベースに再生できるという利点があります。バージョニング後に反復可能なマイグレーションが適用されるため、サンプル内のプロシージャーはドロップされません。欠点は、2つの移行を実行することです。

+0

お返事ありがとうございます。 興味深いオプションがいくつかあります。私はプロシージャをドロップする独立したバージョン管理されたスクリプトを持っているが、それが空白であっても永遠に反復可能なスクリプトをそこに残すことについてちょうど私がどのように感じるかはわからない。後ろに混乱を残すような気がする。 schema_versionテーブルの内容を編集した感想は何ですか? drop procスクリプトは反復可能なスクリプトへのすべての参照を削除することができます(これはうまくいきません。 – cdavid15

+0

バージョン1のスクリプトを実行してデータベースを再現する必要がありますか?そうでなければ、schema_versionテーブルに保存されている履歴で自由を取ることができます。フライウェイがあなたのために作成する監査履歴を失うと、私はこれをお勧めしません。 Flywayが実行中にschema_versionテーブルをロックする可能性があるため、これを達成する方法を実験する必要があります。履歴を保持するためにレコードを別のテーブルにコピーすることをお勧めします –

関連する問題