Flyway の DBマイグレーションで、エラーが発生した場合の対処方法を書いていきます
バージョン
ブログ執筆時の製品バージョンは以下の通りです。
- Java 11
- Flyway 9.8.3
- PostgreSQL 15.1
- pgJDBC 42.5.1(JDBC Driver)
エラーの内容
Flyway.migrate()
を実行すると、以下のスタックトレースが出力されました。
Exception in thread "main" org.flywaydb.core.api.FlywayException: Found non-empty schema(s) "public" but no schema history table. Use baseline() or set baselineOnMigrate to true to initialize the schema history table. at org.flywaydb.core.Flyway.lambda$migrate$0(Flyway.java:166) at org.flywaydb.core.FlywayExecutor.execute(FlywayExecutor.java:204) at org.flywaydb.core.Flyway.migrate(Flyway.java:128) at org.sample.Main.main(Main.java:13)
スキーマが空ではないのに、Flyway の履歴テーブルが存在しない、といった内容です。
エラーの原因
テーブルやシーケンスが存在するスキーマで、初回のマイグレーションを実行したことが原因でした。