用途
该技能面向 Quarkus 应用中的数据库迁移工作,用于添加或审查基于 Flyway 的迁移脚本与配置。它提供一套参考规则和正反示例,帮助在 Quarkus 项目中以一致、安全的方式管理数据库 schema 变更。
主要能力
- 使用 quarkus-flyway 扩展配合 quarkus-jdbc-* 驱动。
- 在 src/main/resources/db/migration 下组织版本化 SQL 迁移脚本。
- 配置 quarkus.flyway.migrate-at-start、locations、baseline 等选项。
- 处理多数据源场景(在适用时)。
- 采用 Parallel Change(expand、migrate、contract)作为破坏性或数据敏感 schema 变更的安全工作流。
- 与 @411-frameworks-quarkus-jdbc 和 @412-frameworks-quarkus-panache 协同。
使用方式
技能的工作流包括:
- 阅读参考文档并评估项目上下文:阅读 references/413-frameworks-quarkus-db-migrations-flyway.md、references/413-frameworks-quarkus-db-migrations-flyway-antipatterns.md 和 references/413-frameworks-quarkus-db-migrations-flyway-parallel-change.md,然后检查当前项目设置。
- 收集范围并确定目标改进:识别请求的结果、约束以及最小安全变更集。
- 应用与框架一致的变更:按照参考模式和项目约定实现或重构配置/代码,对破坏性或数据敏感 schema 变更默认使用 Parallel Change。
- 运行验证并报告结果:执行适当的构建/测试,总结变更内容、验证结果和后续操作。
约束与安全要求:
- 在应用 Flyway 或 SQL 变更前,确保项目可编译。
- 强制要求:在应用任何变更前运行 ./mvnw compile 或 mvn compile。
- 安全:如果编译失败,立即停止。
- 验证:在应用改进后运行 ./mvnw clean verify 或 mvn clean verify。
- 应用前:阅读参考以了解详细规则和正反模式。
- 破坏性变更审查:在推荐或应用迁移前,评估其是否会破坏已部署的应用版本、依赖服务、报表、作业或生产数据解释;如果是,则要求明确的人工审查后再继续。
- 边界情况:如果用户目标不明确,停止并在编辑文件或运行项目级命令前提出澄清问题。
- 边界情况:如果缺少所需上下文、文件、凭据或工具,明确报告阻塞并询问是否继续设置或提供回退指导。
- 边界情况:如果请求的变更与项目约束或安全边界冲突,解释冲突并请用户确认首选权衡。
适用场景
- 在 Quarkus 项目中添加或审查 Flyway 迁移。
- 配置 quarkus-flyway 或 db/migration 布局。
- 为 Quarkus 添加版本化 Flyway SQL 迁移。
- 审查 Quarkus 数据库迁移顺序。
- 在 Quarkus 中配置 Flyway clean、migrate 或 baseline。
限制
该技能基于参考规则和正反示例提供建议,具体实现需结合项目实际。破坏性变更必须经过人工审查。若缺少必要上下文、文件、凭据或工具,需明确报告阻塞。用户目标不明确时需先澄清。