TL;DR
- Flyway 10.0以降で
flyway-core
からデータベースサポートが分離 - PostgreSQLを使用する場合は
flyway-database-postgresql
の依存関係を追加する必要あり
遭遇した問題
PostgreSQL 14.x(Flywayの公式サポート対象バージョン)を使用しているプロジェクトで、flyway:migrate
実行時に以下のエラーが発生:
Unsupported Database: PostgreSQL 14.x
原因
私の場合、以下のように両方のライブラリを指定していたことが問題でした:
dependencies {
implementation 'org.flywaydb:flyway-core:11.1.1'
implementation 'org.flywaydb:flyway-database-postgresql:11.1.1'
}
これが問題となった技術的な理由として以下が考えられます:
- Flyway 10.0からデータベースサポートが
flyway-core
から分離されました - 両方のライブラリを指定した場合、
flyway-core
に含まれる古い(あるいは無効化されているはずの)データベースドライバーが優先的に使用される可能性がある - その結果、新しい
flyway-database-postgresql
のドライバーが正しく認識されず、「Unsupported Database」エラーが発生する
解決方法
dependencies {
- implementation 'org.flywaydb:flyway-core:11.1.1'
- implementation 'org.flywaydb:flyway-database-postgresql:11.1.1'
+ implementation 'org.flywaydb:flyway-database-postgresql:11.1.1'
}
※ flyway-core
はflyway-database-postgresql
の依存関係として自動的に解決されるため、明示的な指定は不要です。
さいごに
メジャーバージョンアップデート時は、依存関係の構造変更の有無を必ず確認しましょう。
特にFlywayの場合、10.0以降は使用するデータベース用の依存関係を明示的に指定する必要があります。