【发布时间】:2019-03-03 07:39:28
【问题描述】:
我在 spring boot jpa 项目中使用 flyway 数据库迁移工具。当我第一次运行服务器时,flyway 想要迁移 sql,但尚未创建表。在这种情况下,flyway 返回一个类似于
的错误Caused by: org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateSqlException:
Migration V1__countries_and_states.sql failed
SQL State : 42S02
Error Code : 1146
Message : Table 'wallet.country' doesn't exist
Location : db/migration/V1__countries_and_states.sql (/root/IdeaProjects/service/target/classes/db/migration/V1__countries_and_states.sql)
Line : 1
我使用这些选项配置了 application.properties 文件:
- spring.flyway.baseline-on-migrate=true
- spring.flyway.enabled=true
- spring.flyway.clean-on-validation-error=true
- spring.flyway.init-on-migrate=true
我希望我的迁移能够成功完成。
【问题讨论】:
-
您可能应该让 JPA 提供程序将 DDL 脚本输出到文件,而不是让它创建表 &c。在运行时即时运行。然后您可以将这些 DDL 脚本与 flyway 一起使用。无论如何,让普通应用程序执行 DDL 并不是一个好习惯。
标签: java spring-data-jpa spring-data database-migration flyway