You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flyway info命令基线迁移输出异常:重复基线条目问题求助

Flyway Info输出重复基线版本条目问题解答

核心结论

这个重复条目现象不正常,是代码库中存在与基线版本同名的迁移脚本导致的冗余显示,功能上不影响,但可以通过简单操作消除。

原因分析

  • 你之前执行过flywayBaseline命令,将6.4.0设为数据库基线版本,这条记录会以BASELINE类型保存在flyway_schema_history表中。
  • 同时你的迁移脚本目录(classpath:db/migration/v*)里,还有一个对应6.4.0的版本化脚本(比如V6_4_0__Version_6.4.0.sql)。Flyway扫描到该脚本后,发现其版本号与基线版本完全一致,因此将其标记为Ignored (Baseline),最终两个条目同时出现在info输出中。

问题拆解解答

  1. 是否正常?
    功能运行正常是因为Flyway不会执行被标记为Ignored (Baseline)的脚本,但视觉上的重复属于冗余输出,不符合预期,不算正常现象。

  2. 如何解决?

    • 最优方案:删除代码库中那个6.4.0的版本化迁移脚本。基线已经代表了6.4.0的数据库初始状态,保留该脚本没有实际意义,删除后再次执行flywayInfo就不会出现重复条目。
    • 备选方案(不推荐):如果必须保留脚本,可以在Flyway配置中添加ignoreMigrationPatterns = arrayOf("V6_4_0__*"),让Flyway忽略该脚本,但会增加配置复杂度,不如直接删除脚本简洁。
  3. 能否手动编辑flyway_schema_history表?
    绝对不建议!Flyway完全依赖这个表的记录来追踪数据库迁移状态,手动修改可能破坏版本链的完整性,导致后续迁移出现执行混乱、版本校验失败等不可预测的问题。


你提供的info输出:

Schema version: 6.8.0
+-----------+---------+-----------------------+----------+---------------------+--------------------+----------+
| Category  | Version | Description           | Type     | Installed On        | State              | Undoable |
+-----------+---------+-----------------------+----------+---------------------+--------------------+----------+
| Versioned | 6.0.0   | Version 6.0.0         | SQL      |                     | Below Baseline     | No       |
| Versioned | 6.0.1   | Version 6.0.1         | SQL      |                     | Below Baseline     | No       |
| Versioned | 6.1.0   | Version 6.1.0         | SQL      |                     | Below Baseline     | No       |
| Versioned | 6.1.1   | Version 6.1.1         | SQL      |                     | Below Baseline     | No       |
| Versioned | 6.2.0   | Version 6.2.0         | SQL      |                     | Below Baseline     | No       |
| Versioned | 6.2.1   | Version 6.2.1         | SQL      |                     | Below Baseline     | No       |
| Versioned | 6.3.0   | Version 6.3.0         | SQL      |                     | Below Baseline     | No       |
|           | 6.4.0   | << Flyway Baseline >> | BASELINE | 2023-01-23 15:39:49 | Baseline           | No       |
| Versioned | 6.4.1   | Version 6.4.1         | SQL      | 2023-01-23 15:40:15 | Success            | No       |
| Versioned | 6.4.2   | Version 6.4.2         | SQL      | 2023-01-23 15:40:17 | Success            | No       |
| Versioned | 6.5.0   | Version 6.5.0         | SQL      | 2023-01-23 15:40:18 | Success            | No       |
| Versioned | 6.6.0   | Version 6.6.0         | SQL      | 2023-01-23 15:40:19 | Success            | No       |
| Versioned | 6.6.1   | Version 6.6.1         | SQL      | 2023-01-23 15:40:22 | Success            | No       |
| Versioned | 6.6.2   | Version 6.6.2         | SQL      | 2023-01-23 15:40:26 | Success            | No       |
| Versioned | 6.6.3   | Version 6.6.3         | SQL      | 2023-01-23 15:40:28 | Success            | No       |
| Versioned | 6.6.4   | Version 6.6.4         | SQL      | 2023-01-23 15:40:32 | Success            | No       |
| Versioned | 6.7.0   | ************          | SQL      | 2023-05-10 14:49:21 | Success            | No       |
| Versioned | 6.7.1   | Version 6.7.1         | SQL      | 2023-05-10 14:49:22 | Success            | No       |
| Versioned | 6.7.2   | Version 6.7.2         | SQL      | 2023-05-10 14:49:25 | Success            | No       |
| Versioned | 6.8.0   | *******************   | SQL      | 2023-05-10 14:49:28 | Success            | No       |
| Versioned | 6.4.0   | Version 6.4.0         | SQL      |                     | Ignored (Baseline) | No       |
+-----------+---------+-----------------------+----------+---------------------+--------------------+----------+

你的Gradle配置:

plugins {
    id("org.flywaydb.flyway").version("9.11.0")
}
flyway {
    locations = arrayOf("classpath:db/migration/v*")
    val dbId = project.extra["db.id"] as? String ?: "db"
    url = project.extra["$dbId.url"] as String
    user = project.extra["$dbId.user"] as String
    password = project.extra["$dbId.password"] as String
}

内容的提问来源于stack exchange,提问作者Beholder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:07:08