创建 jpa 表后的 Flyway 迁移
Posted
技术标签:
【中文标题】创建 jpa 表后的 Flyway 迁移【英文标题】:Flyway migration after jpa tables have been created 【发布时间】: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 文件:
我希望我的迁移能够成功完成。
【问题讨论】:
您可能应该让 JPA 提供程序将 DDL 脚本输出到文件,而不是让它创建表 &c。在运行时即时运行。然后您可以将这些 DDL 脚本与 flyway 一起使用。无论如何,让普通应用程序执行 DDL 并不是一个好习惯。 【参考方案1】:您的第一次迁移必须创建表!
阅读本教程:https://flywaydb.org/getstarted/firststeps/api
【讨论】:
谢谢 Simon Martinelli 但我想在休眠自动创建表后迁移 flyway sqls。我认为flyway是不可能的 另外这不是一个好主意!最好是让 hibernate 创建 SQL DDL 文件,然后改进它并用作第一次迁移。【参考方案2】:可以使用如下配置属性:flyway.out-of-order = true
。它说在 hibernate/jpa 创建/更新表后 flyway 工作。
【讨论】:
以上是关于创建 jpa 表后的 Flyway 迁移的主要内容,如果未能解决你的问题,请参考以下文章
Flyway 3.1 数据库迁移多个模式 - Oracle 11g