今日、私は同じような問題に直面しました。Flyway1.7を最新リリースの2.0.3にアップデートしました。また、バージョン1.7のように、移行が機能しなくなったことにも気づきました。
ベースフォルダー(db.migrations)のさまざまなサブフォルダーを使用して、独自のschema_versionテーブルを持つ個別のライフサイクルを持つさまざまなデータベーススキームの移行を保持します。
src->main->resources->db.migrations
->business_partitions
-> V1_1__BUSINESS_PARTITION_INDEXES.sql
-> V1__BUSINESS_PARTITIOS.sql
->tech
-> V1_1__TECH_CERTIFICATES_AND_DECRYPTORS_TABLES.sql
-> V1__TECH.sql
-> V2__JMS.sql
->view
-> V1__PARTITION11_DB_CREATION_SCRIPT_VIEWS.sql
今日、Javaで次の行を使用してdb移行を実行したとき:
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource);
flyway.setLocations("db.migrations.business_partitions");
flyway.migrate();
移行は行われませんでした。
フライウェイのソースコードを少し調べたところ、CompositeMigrationResolverクラスのmergeLocations()メソッドで場所がフィルターで除外されていることが問題であることがわかりました。
ここで、business_partitionsはdb.migrationsのサブフォルダーであり、BaseDirとBasePackageのデフォルト値であるため、私の場所はフィルターで除外されました。
BaseDirとBasePackageを明示的に設定することで回避しました。
flyway.setBaseDir("db.migrations.business_partitions");
flyway.setBasePackage("db.migrations.business_partitions");
これらの2つの方法はフライウェイ3で非推奨になることを読みました。したがって、これで問題が解決する可能性もあります。