SuperAPI AI 工具集

flyway-migrations

通用与其它

查看项目

更新于 10-16 00:20

技能介绍

用途:在 Spring Boot 项目中编写 Flyway 数据库迁移脚本,处理建表、加列、加索引、数据回填等结构变更。

主要能力与规范:迁移文件放在 src/main/resources/db/migration/。命名格式为 V{version}{description}.sql(版本化,只运行一次)、R{description}.sql(可重复,校验和变化时运行)、U{version}__{description}.sql(撤销,需 Flyway Teams)。版本与描述之间用双下划线 __,描述内空格用单下划线 _,版本需连续、不回填空缺,已运行过的迁移不得修改。

安全模式:新增列应可空或带默认值;加索引可用 CREATE INDEX CONCURRENTLY,但它不能在事务内运行,而 Flyway 默认把每个迁移包在事务中,因此需为该脚本提供同名 .sql.conf 边车文件并设置 executeInTransaction=false,且该语句单独放一个文件。重命名列应分多步:先加新列、回填数据、加约束,代码部署后再于后续迁移中删除旧列。避免直接 RENAME COLUMN,避免在大表上添加无默认值的 NOT NULL 列。

配置:application.yml 中可设置 spring.flyway.enabled、locations、baseline-on-migrate、validate-on-migrate、out-of-order 等;生产环境不应开启 out-of-order。种子数据建议用 @Profile("dev") 的 ApplicationRunner 实现,而非写入 Flyway 迁移。

团队协作:多人同时创建迁移易产生版本冲突,可用共享记录或基于时间戳的版本号;提交前运行 flyway info 检查缺口或重复,CI/CD 中把 flyway validate 作为预部署步骤。

限制:撤销迁移需 Flyway Teams;CONCURRENTLY 与事务的冲突需额外配置;资料未提供具体价格、平台支持范围及更多版本细节。