如何从 Flyway 迁移名称中删除前缀?
Posted
技术标签:
【中文标题】如何从 Flyway 迁移名称中删除前缀?【英文标题】:How to remove prefix from Flyway migration name? 【发布时间】:2021-11-23 03:04:46 【问题描述】:默认情况下,Flyway 在文件夹db/migration
中搜索以“V”开头的迁移,例如:
V1_1_0__init_schema.sql
但是,我的迁移具有以下命名模式(并且我无法更改我的迁移名称):
20210902193819451__init_schema.sql
如何从 Flyway 的默认行为中删除字母“V”,以便可以找到我的迁移?
我已经尝试在我的配置文件中设置以下属性:
spring.flyway.sql-migration-prefix: ""
,但这不起作用,我收到以下错误:
init 方法调用失败;嵌套异常是 org.flywaydb.core.api.exception.FlywayValidateException:验证 failed:迁移验证失败
【问题讨论】:
我在spring.flyway.sql-migration-prefix: ""
上使用与您相同的文件格式测试了配置,并且成功了。您能否详细说明您的资源路径、使用情况和堆栈跟踪?
【参考方案1】:
在这种情况下,Flyway 是 Spring 托管的 bean。您的配置应为spring.flyway.sql-migration-prefix=V
,如here 所述。
注意,因为数据库迁移意味着versioning、undo 和repeatable 迁移具有不同的前缀。您还应该注意,实体验证可能来自 Flyway(来自表 flyway_schema_history
),它检查您的脚本校验和,以及 Hibernate,它检查您的 @Entity
模型。
【讨论】:
是的,我正在使用属性spring.flyway.sql-migration-prefix
(我已经编辑了我的问题)。但问题是我想从默认行为中删除V
。
@Caroline 您可以尝试使用 flyway 配置文件来更改配置吗?格式为db/migration/conf/flyway.conf
并使用flyway.sql-migration-prefix
指定here。
使用spring.flyway.sql-migration-prefix
(我已经有)设置配置并创建文件flyway.conf
并开始使用flyway.sql-migration-prefix
不一样吗?【参考方案2】:
我解决了将以下配置添加到我的application.yml
文件的问题:
spring.flyway.sql-migration-prefix: "20"
spring.flyway.sql-migration-separator: "_"
我没有删除前缀,而是简单地替换了它。
【讨论】:
以上是关于如何从 Flyway 迁移名称中删除前缀?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 IntelliJ IDEA 中的模型类生成 Flyway 迁移脚本?