在 Spring Boot 项目中集成 Flyway 并结合 Nacos 的配置管理,可以按照以下步骤进行操作:
添加 Flyway 依赖
Groovy
implementation 'org.flywaydb:flyway-core'
配置 Nacos 中的数据库和 Flyway 参数
Flyway 默认是读取 spring.datasource 中的配置作为数据源信息,当然也可以通过 java 代码或者 spring.flyway 单独进行配置数据源信息。
java
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
# Flyway配置
flyway:
enabled: true # 启用Flyway(默认true)
baseline-on-migrate: true # 对已存在表结构的数据库执行基准迁移(首次使用时建议开启)
baseline-version: 1 # 基准版本号(默认1)
locations: classpath:db/migration # 迁移脚本存放路径(默认值)
clean-disabled: true # 禁用clean命令(生产环境必须开启,防止误删数据)
validate-on-migrate: true # 迁移时验证脚本(默认true)
创建数据库迁移脚本
在项目的 src/main/resources 目录下创建 db/migration 文件夹,并按照 Flyway 的命名规范编写 SQL 脚本:
- 版本迁移脚本:V{版本号}__{描述}.sql(如V1__init_schema.sql、V2__add_user_table.sql);
启动项目验证集成效果
启动 Spring Boot 项目后,Flyway 会自动执行以下操作:
- 检查数据库中是否存在flyway_schema_history表(不存在则创建);
- 对比db/migration目录下的脚本与flyway_schema_history表中的记录;
- 执行未执行过的脚本,并将执行记录写入flyway_schema_history表;
- 如果启动日志中出现类似以下内容,说明集成成功:
html
Successfully applied 1 migration to schema `your_db` (execution time 00:00.035s)
进阶配置
通过上述配置,已经能成功集成 Flyway。当然,Flyway 还具备一些定制化配置,如果需要用到可以自行查询。