Flyway は、データベースの移行を効率的に管理するための優れたツールのように思われるため、当社のシステムに統合することを検討しています。
ただし、続行する方法がよくわかりません。
3つの異なるデータベースがあります
- 本番環境 (MySQL)
- テスト環境 (MySQL)
- 単体テスト (H2 インメモリ)
それらにはすべて異なるデータが含まれています(異なるユーザーなど)。データベース間で共通のデータ (フライウェイ ページでは参照データと呼ばれます) はなく、構造のみが同じままである必要があります。
ウェブサイトを見ると、私の理解は次のように進むことです:
本番環境からスキーマ バージョンを抽出し、これを V1__BASE_version.sql などのファイルに保存する必要があります。私はこれを例えば次のようにします:
mysqldump -d -u ユーザー名 -p パスワード -h ホスト名 データベース名
また、構造のダンプを取得し、それを本番システムの構造と比較することで、ddl がテスト環境のものと一致することを確認します (差分から開始し、明確でない場合は手動で行います)。万一違いが見つかった場合は、テスト用またはライブ用に db 構造を変更することでそれらを取り除きます (より意味のあるものに応じて)。
ホームページで説明されているように、初期バージョンのデータですべてのデータベースを初期化します。私のさまざまなデータベースでは、さまざまな -Durl=、-Dusername=、および -Dpassword= パラメータを使用しています。
mvn flyway:init -Dflyway.initVersion=1 -Dflyway.initDescription="ベース バージョン"
フライウェイを拾うように春のセットアップを構成します (ホームページで説明されているように)。これにより、移行が自動的に適用され、データベースがアプリケーションと一貫した状態にあることが保証されます。
これは正しい方法ですか?重要な手順を忘れていませんか?
インメモリ データベースへのテスト データの追加に関して、1 つ質問が残っています。
単体テスト データを挿入する正しい場所はどこですか? 春を使用してフライウェイをセットアップし、それに依存して休止状態にしたとしても
<bean id="sessionFactory" class="..." depends-on="flyway">
...
</bean>
データソースは以前に作成され、これは現在、スキーマとテスト データを追加する場所です。データソースを作成するときにサンプル データを追加すると、私の間違いでなければ、スキーマは正しいものにはなりません。
インメモリデータベースを使用してフライウェイでテストデータを使用するにはどうすればよいですか?
ありがとう!