如何从 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 迁移名称中删除前缀?的主要内容,如果未能解决你的问题,请参考以下文章

如何手动清理针对数据库运行的最后一次 flyway 迁移

如何从 IntelliJ IDEA 中的模型类生成 Flyway 迁移脚本?

Flyway - 多个 git 分支上的 SQL 迁移脚本版本

Flyway 迁移更新架构

使用flyway迁移脚本时如何从文件中填写表格

Flyway 是不是有我们可以在 SQL 迁移中使用的“数据库名称”占位符?