これが可能かどうかはわかりませんが、Flyway Java APIを使用してプログラムでSQLファイルに保存された移行をロードしようとしています。私はFlyway Java APIでSQL移行ファイルを使用
Flyway flyway = new Flyway();
flyway.setDataSource(jdbc_url, user, password);
int migrations = flyway.migrate(); // Just to check the # of migrations applied
使用するJavaプログラムに続いて
CREATE TABLE test_user (
name VARCHAR(25) NOT NULL, PRIMARY KEY(name)
);
:私は、単純なテーブル作成ステートメントを使用してとして(今の簡略化のため)基本クラスパスに保存されたSQLファイルV1__Initial_version.sqlを持っています私はClassPathScannerが有効な移行のためのクラスパスを見て参照してください、それはSQL移行ファイルを無視するようです。 flywayマイグレーションをコマンドラインから呼び出すと、同じsql移行ファイルが正常に動作します。私はJavaクラスを作成し、JdbcMigrationsクラスから継承し、ClassPathScannerはそれをうまく選択します。 .sqlファイルをJava ClassPathScannerで取得して有効な移行として使用するには、何が必要ですか?
BIGGER PICTURE私は私が何をしようとしている追加しますので、たぶん私は最初の場所で誤っこれについてつもり
。私は、使用することができ、テストの間に再構築することができるテストDBをセットアップしようとしています。 I. TestAがテーブルに何かを入力すると、事前テスト機能はDBをクリーンアップしてリセットし、TestBはクリーンなDBと空のテーブルを持ち、テストを実行します。私は、事前テスト機能でflyway.clean()とflyway.migrate()を使用していますが、schema_versionテーブルを他のものと一緒に破棄してから、移行は以前のベースラインから再構築しません。
ご協力いただきましてありがとうございます。ありがとう!
setLocations()を使用します。データ、はい、しかしスキーマですか?私はDbSetup(http://dbsetup.ninja-squad.com/)を使用します。免責事項:私は著者です。 –
あなたは正しいですが、実際にはスキーマをヌックにする点はありません。私がしようとしているのは、データをクリアすることですが、** flyway.clear **を使用すると、私のスキーマテーブルも削除されます。私は、飛行機がデータをクリアするだけでなく、テーブルとスキーマを残す別の方法を見ていませんでした。 –
それは、フライウェイのためではありません。 Flywayの仕事はスキーマの進化を作ることです。 –