KCloud-Platform-IoT KCloud-Platform-IoT
首页
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 更新日志

    • 4.0.1版本更新日志【总览】
  • 指南

    • 后端项目启动【单体】
    • 前端项目启动【单体】
    • 后端项目启动【微服务】
    • 前端项目启动【微服务】
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
    • OAuth2.1授权服务器配置
    • OAuth2.1资源服务器配置
    • OAuth2.1认证API配置
    • Nacos配置
    • 网关路由配置
    • 项目常用注解
    • Elasticsearch注解
    • Spring Cloud Alibaba配置
    • Spring Cloud Gateway配置
    • gRPC配置
    • ID生成器
    • Flyway配置
赞助
GitHub (opens new window)
首页
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 更新日志

    • 4.0.1版本更新日志【总览】
  • 指南

    • 后端项目启动【单体】
    • 前端项目启动【单体】
    • 后端项目启动【微服务】
    • 前端项目启动【微服务】
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
    • OAuth2.1授权服务器配置
    • OAuth2.1资源服务器配置
    • OAuth2.1认证API配置
    • Nacos配置
    • 网关路由配置
    • 项目常用注解
    • Elasticsearch注解
    • Spring Cloud Alibaba配置
    • Spring Cloud Gateway配置
    • gRPC配置
    • ID生成器
    • Flyway配置
赞助
GitHub (opens new window)
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 更新日志

    • 4.0.1版本更新日志【总览】
  • 指南

    • 后端项目启动【单体】
    • 前端项目启动【单体】
    • 后端项目启动【微服务】
    • 前端项目启动【微服务】
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
    • OAuth2.1授权服务器配置
    • OAuth2.1资源服务器配置
    • OAuth2.1认证API配置
    • Nacos配置
    • 网关路由配置
    • 项目常用注解
    • Elasticsearch注解
    • Spring Cloud Alibaba配置
    • Spring Cloud Gateway配置
    • gRPC配置
    • ID生成器
    • Flyway配置
    • 二开指南
    • 指南
    KCloud-Platform-IoT
    2026-03-10
    目录

    Flyway配置

    你好呀,我的老朋友!我是老寇,欢迎来到老寇IoT云平台!

    # 什么是 Flyway?

    Flyway 是一个开源的数据库迁移工具,它秉承“约定优于配置”的理念,让数据库变更的过程像代码版本控制一样简单且可追溯。

    # Spring Boot 集成 Flyway

    在 Spring Boot 项目中集成 Flyway 步骤如下:

    1. 引入依赖 在 pom.xml 中引入相关的依赖:
    <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-database-postgresql</artifactId> <!-- 若为 PostgreSQL 需要此包 -->
    </dependency>
    
    1. 配置 application.yml 配置 Flyway 的基础参数:
    spring:
      flyway:
        enabled: true
        # SQL脚本存放路径,默认是 classpath:db/migration
        locations: classpath:db/migration
        # 第一次运行环境是否自动执行基准迁移(当已有数据库表时需开启)
        baseline-on-migrate: true
    	# 基准版本号,默认为 1
        baseline-version: 1
        # 历史记录表名,默认 flyway_schema_history
        table: flyway_schema_history
    
    1. 编写 SQL 脚本

    在 src/main/resources/db/migration 目录下按照约定命名并存放你的 SQL 脚本:

    命名规范:V{版本号}_{yyyyMMddHHmm}__{operate}_{table}.sql

    注意事项:执行过的SQL脚本不能修改,如果需要修改字段类型,添加字段等,参考alter

    操作类型(operate):

    • create(创建表)
    • insert(插入数据)
    • update(修改数据)
    • delete(删除数据)
    • alter(新增或修改表字段类型/注释/名称)
    • idx(新增索引)

    例如:V1_202304011000__create_user.sql、V2_202304011001__insert_user.sql

    项目启动时,Spring Boot 会自动执行未被记录的脚本,并将其状态写入并维护在 flyway_schema_history 表中。

    # Flyway 与 Liquibase 的对比区别

    Flyway 和 Liquibase 都是目前主流且优秀的数据库版本控制工具,但也存在明显的差异:

    特性维度 Flyway Liquibase
    编写格式 主要是纯 SQL 文件(也支持 Java API) 主要通过 XML、YAML、JSON 描述(也支持 SQL)
    学习曲线 平缓/极低:掌握 SQL 即可上手,简单直观。 陡峭/较高:需学习特有的标签和语法节点。
    跨数据库兼容 较弱:因为直接写原生 SQL,换数据库时往往需重写或维护多套 SQL 脚本。 极强:只需写一套 XML/YAML,工具会自动翻译为目标数据库的方言。
    功能丰富度 轻量级,功能简单,专注于直接执行变更。 重量级,提供复杂的 Preconditions(前置条件)、上下文(Contexts)控制等功能。
    回滚能力(Undo) 社区免费版不支持回滚功能(仅商业版支持)。 免费开源版原生支持很好的回滚(Rollback)操作。
    最佳适用场景 数据库选型固定(例如只用 MySQL),团队喜欢原生 SQL 所见即所得。 需同时兼容 MySQL/PG/Oracle 等多类型数据库的产品,或强依赖回滚管理的企业级应用。

    优势与劣势

    维度 Flyway Liquibase
    学习成本 低 高
    简单性 非常简单 复杂
    SQL支持 原生 需要 DSL
    rollback 弱 强
    多数据库支持 弱 强
    schema diff 无 有
    CI/CD 非常友好 一般
    微服务 非常适合 一般

    我是老寇,我们下次再见啦!

    上次更新: 3/11/2026, 12:21:59 PM
    ID生成器

    ← ID生成器

    Theme by Vdoing | Copyright © 2022-2026 laokou | Apache 2.0 License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式