SpringBoot 项目集成 Flyway

在 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 还具备一些定制化配置,如果需要用到可以自行查询。

相关推荐
AllData公司负责人4 分钟前
【亲测好用】实时开发平台能力演示
java·c语言·数据库
pcm1235675 分钟前
设计C/S架构的IM通信软件(3)
java·c语言·架构
咖啡啡不加糖19 分钟前
Grafana 监控服务指标使用指南:打造可视化监控体系
java·后端·grafana
€81122 分钟前
Java入门级教程26——序列化和反序列化,Redis存储Java对象、查询数据库与实现多消费者消息队列
java·拦截器·序列化和反序列化·数据库查询·redis存储java对象·多消费者消息队列
多多*30 分钟前
Mysql数据库相关 事务 MVCC与锁的爱恨情仇 锁的层次架构 InnoDB锁分析
java·数据库·windows·sql·oracle·面试·哈希算法
gAlAxy...31 分钟前
SpringBoot Servlet 容器全解析:嵌入式配置与外置容器部署
spring boot·后端·servlet
流㶡1 小时前
mysql学习笔记之创建表、导入导出数据
数据库·mysql
cyforkk1 小时前
15、Java 基础硬核复习:File类与IO流的核心逻辑与面试考点
java·开发语言·面试
李少兄1 小时前
解决 org.springframework.context.annotation.ConflictingBeanDefinitionException 报错
java·spring boot·mybatis
大飞哥~BigFei1 小时前
整数ID与短字符串互转思路及开源实现分享
java·开源