31

私は現在のプロジェクトでデータベースの移行に使用Flywayし始めましたが、とても気に入っています。私は現在、PROD-でOracleを使用し、TEST-EnvironmentでDerbyを使用しています。

すぐに、データベース固有のSQLコマンドの問題が発生しました。

  • ALTER TABLE T1 MODIFY F1 VARCHAR(256);Oracleと
  • ALTER TABLE T1 ALTER F1 SET DATA TYPE VARCHAR(256);ダービーに。

「ベンダーニュートラル変更テーブル変更列データ型」SQLを作成する方法がわかりません。

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

4

2 に答える 2

40

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

テストでは、次のようになります。

flyway.locations=sql/common,sql/derby

と製品で:

flyway.locations=sql/common,sql/oracle

次に、共通ステートメント(V1__Create_table.sql)を共通のコピーにし、DB固有のステートメント(V2__Alter_table.sql)の異なるコピーをデータベース固有の場所に配置することができます。

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

于 2012-11-29T08:16:41.253 に答える
0

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

私は、各開発者が2セットのSQLの同期を手動で維持することに依存するよりも、このアプローチを好みます。

于 2015-08-19T21:56:26.907 に答える