2

Flyway は、データベースの移行を効率的に管理するための優れたツールのように思われるため、当社のシステムに統合することを検討しています。

ただし、続行する方法がよくわかりません。

3つの異なるデータベースがあります

  1. 本番環境 (MySQL)
  2. テスト環境 (MySQL)
  3. 単体テスト (H2 インメモリ)

それらにはすべて異なるデータが含まれています(異なるユーザーなど)。データベース間で共通のデータ (フライウェイ ページでは参照データと呼ばれます) はなく、構造のみが同じままである必要があります。

ウェブサイトを見ると、私の理解は次のように進むことです:

  1. 本番環境からスキーマ バージョンを抽出し、これを V1__BASE_version.sql などのファイルに保存する必要があります。私はこれを例えば次のようにします:

    mysqldump -d -u ユーザー名 -p パスワード -h ホスト名 データベース名

  2. また、構造のダンプを取得し、それを本番システムの構造と比較することで、ddl がテスト環境のものと一致することを確認します (差分から開始し、明確でない場合は手動で行います)。万一違いが見つかった場合は、テスト用またはライブ用に db 構造を変更することでそれらを取り除きます (より意味のあるものに応じて)。

  3. ホームページで説明されているように、初期バージョンのデータですべてのデータベースを初期化します。私のさまざまなデータベースでは、さまざまな -Durl=、-Dusername=、および -Dpassword= パラメータを使用しています。

    mvn flyway:init -Dflyway.initVersion=1 -Dflyway.initDescription="ベース バージョン"

  4. フライウェイを拾うように春のセットアップを構成します (ホームページで説明されているように)。これにより、移行が自動的に適用され、データベースがアプリケーションと一貫した状態にあることが保証されます。

これは正しい方法ですか?重要な手順を忘れていませんか?

インメモリ データベースへのテスト データの追加に関して、1 つ質問が残っています。

単体テスト データを挿入する正しい場所はどこですか? 春を使用してフライウェイをセットアップし、それに依存して休止状態にしたとしても

<bean id="sessionFactory" class="..." depends-on="flyway">
...
</bean>

データソースは以前に作成され、これは現在、スキーマとテスト データを追加する場所です。データソースを作成するときにサンプル データを追加すると、私の間違いでなければ、スキーマは正しいものにはなりません。

インメモリデータベースを使用してフライウェイでテストデータを使用するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

テストデータスクリプトを含む追加の場所を構成できます。次に、これは単体テストにのみ含まれるように構成する必要があります。

于 2013-03-14T17:28:16.850 に答える