Flyway 发现多个版本的迁移

Posted

技术标签:

【中文标题】Flyway 发现多个版本的迁移【英文标题】:Flyway Found more than one migration with version 【发布时间】:2020-01-17 11:11:09 【问题描述】:

我有两个 sql 文件,一个用于 oracle,一个用于 mysql 数据库。路径如下

  db/migration/mysql/V1_1_migration.sql
  db/migration/oracle/V1_1_migration.sql

在运行测试时,我遇到了错误

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Found more than one migration with version 1.1
Offenders:
-> C:\code\service\db-repository\target\classes\db\migration\oracle\V1_1__migration.sql (SQL)
-> C:\code\service\db-repository\target\classes\db\migration\mysql\V1_1__migration.sql (SQL)

解决此错误的任何指针。

【问题讨论】:

【参考方案1】:

Flyway 位置属性需要一个 vendor 占位符,然后是数据库驱动程序 ID(h2、mysql、oracle 等)的小写字母 Spring Boot will work out the directory,例如:

spring.flyway.locations=db/migration,db/migration/vendor

在上面的示例中,与供应商无关的脚本可以放在 db/migration 中,特定于供应商的脚本可以放在 db/migration/oracle 等中。

【讨论】:

【参考方案2】:

\target\classes\db\migration 目录中有 2 个相同的文件。删除其中一个并重新启动您的项目。

如果出现任何问题,请删除您的目标文件夹并重新构建您的项目。

【讨论】:

以上是关于Flyway 发现多个版本的迁移的主要内容,如果未能解决你的问题,请参考以下文章

FlyWay 迁移策略

我可以在不重新运行迁移的情况下修复 Flyway 中的版本号吗?

Flyway - 迁移到特定版本

如何应对不断变化的 Flyway 迁移?

Flyway 可重复迁移 - 在版本化迁移之前执行?

从特定版本开始 Flyway 迁移