2017-07-06 1 views
1

新しいプロジェクトを開始しました。新しいアプリケーションを最初から構築しています。チームはまったく新しいスキーマで始まりました。私はデータベース構築プロセスを自動化したいので、オプションを探し始めました。フライウェイは良いと思われる。私はちょっと遊んでいて、ツールのいくつかの制限を見つけました。多分、誰かが助けることができるでしょう。フライウェイOracleデプロイ

私たちは、SQLファイルに対して次のようなディレクトリ構造を持っている: SQL - DDL - DML - PACKAGES

ファイル名がスプリントの数に基づいているように、我々は、アジャイル開発を行っているが。私たちが使用しているファイル命名規則は次のとおりです。 スプリント#_script#_userstory#_description

例えば: S1_01_US123_CreateNewTable.sql S1_02_US123_AddConstraint.sql

次のスプリント:ように S2_01_US456_AddColumn.sql

そして、 ...

私はJDBCパラメータをセットアップして接続することができます。私は基本的なものをテストしました:クリーン、修復、情報、およびテストスクリプトのカップルでマイグレーションし、それは魅力的なように働いていました。私はすべてのスクリプトを展開しようとしたときに問題に遭遇しました。問題は次のようになります。 - 単一のアンダースコアが嫌いでした。 - S1_01_ *で始まるファイル名が好きではありませんでした。ファイル名の残りの部分が異なり、別のフォルダにあります。

私は、次の質問がある:

  • 私は、ファイルの名前を変更することなく、フライウェイを使用して構築することができますか?

    • のDDL
    • のDML
    • パッケージ(私が展開毎回):

    • は、私はそれがこの順に展開する方法を得ることができます。また、ヘッダファイルとボディファイルが別々になっているので、最初にヘッダを展開してください。

  • schema_versionテーブルの構造を変更できますか?

  • 私は選択的にクリーンアップできますか?オブジェクトのいくつかをドロップしないようにフラグを立てるようにしますか?

私の主な関心事は、他のものよりも前にDDLを実行していることです。私がそれを達成できれば、私はフライウェイを使い始めることができ、私が行くように学ぶことができます。

ありがとうございます。

Harbinder

答えて

0

は、私は、ファイルの名前を変更することなく、フライウェイを使用して構築することができますか?

多分。 flyway.sqlMigrationSeparatorプロパティを試してください。スクリプト番号の後に "_US"を入力してください。 flyway.sqlMigrationPrefix=Sも設定する必要があります。

DDL、DML、パッケージ(毎回展開します)の順序でどのように展開するのですか。また、ヘッダファイルとボディファイルが別々になっているので、最初にヘッダを展開してください。

複数の場所を指定して(カンマで区切って)、これらのファイルがすべて同じディレクトリにあるかのようにバージョン番号の順序を確認してください。コマンドラインから実行している場合は、-Xでデバッグをオンにして、フライウェイが移行をどのように収集するかを確認します。

さらに、フライウェイがファイルを取得するためにファイルの内容を変更する必要があるように、可能であれば、パッケージを反復可能な移行(デフォルト:R)として名前を変更することを検討する必要があります。

schema_versionテーブルの構造を変更できますか?

いいえ。これはフライウェイによって管理されています。

私は選択的にクリーンアップできますか?オブジェクトのいくつかをドロップしないようにフラグを立てるようにしますか?

いいえこの状況では、flyway.cleanDisabled = trueを設定して偶発的な間違いを防ぐのが最善の方法です。余分なクリーニングをしたい場合は、前後にコールバックがありますが、コードを掘り下げずにクリーンアップを制限することはできません。

幸運を祈る!

+0

ありがとうございます!私はあなたが提案したものを正確にやっています。 – HSingh85

+0

コールバックSQL afterFailiedMigrationなどがありますか? – HSingh85

+0

@ HSingh85失敗した移行についてのみ[コールバック](https://flywaydb.org/documentation/callbacks)はありません。あなたは 'afterMigrate'または' afterEachMigrate'でそれを管理する必要があります。また、それが助けになった場合は、その答えを受け入れてください。 –

関連する問題