2012-11-28 7 views
17

データベース移行のために私の現在のプロジェクトでFlywayを使い始めました。私は現在、TEST-EnvironmentのPROD-とDerbyでOracleを使用しています。Flywayの "database specific" SQLスクリプトのベストな方法

まもなく、私はデータベース固有のSQLコマンドの問題で実行しました。ダービーの

  • ALTER TABLE T1 ALTER F1 SET DATA TYPE VARCHAR(256);対オラクルの

    • ALTER TABLE T1 MODIFY F1 VARCHAR(256);

    "ベンダーニュートラルの変更テーブルの変更列のデータ型" sqlを書く方法がわかりません。

    Flywayを使用してこの問題に対処する最善の方法は何ですか?

  • 答えて

    25

    flyway.locationsプロパティを使用できます。

    flyway.locations=sql/common,sql/derby 
    

    とPROD中:試験で

    では、次のようになり

    flyway.locations=sql/common,sql/oracle 
    

    その後、DBの共通および異なるコピーに共通文(V1__Create_table.sql)を持つことができますdb固有の場所にある特定のステートメント(V2__Alter_table.sql)。

    さらに良い解決策は、私の意見では、prodとtestで同じDBを使用することです。はい、パフォーマンスは少し落ちますが、一方で環境間の別の違い(および潜在的なエラーの原因)もなくなります。

    +0

    ありがとうございました! – Peti

    +0

    [flyway FAQ](http://flywaydb.org/documentation/faq.html)のどこかに置く価値はあるでしょうか? – Peti

    +4

    完了:http://flywaydb.org/documentation/faq.html#db-specific-sql –

    0

    OracleとこれらのデスクトップデータベースのSQLの違いは軽微です。開発者は、環境に基づいて実行時にSQLの軽量な動的ストリッピングを行うカスタムコードを挿入することは可能ですか(テーブルスペースの削除など)?

    私は、手動で2組のSQLを同期させておくために、各開発者に頼るのが望ましい方法です。

    +0

    これは別の質問としてお尋ねください。それは興味深い考えです。 – Peti

    +0

    良いアイデアPei作成の質問:http://stackoverflow.com/questions/32121083/customizing-sql-executed-per-environment – dropofahat

    +0

    クール... Axel Fontaineは既にそれに答えました:-) – Peti