SpringBoot 数据库版本管理
方案flyway一、什么是Flyway?二、为什么要用Flyway?三、Flyway工作原理四、Migration迁移操作Mysql SpringBootPostgrelSQL参考文献No database found to handle or Unsupported Database
方案
- Flyway
- SpringDataJpa
- mybatis-enhance-actable
- mybatisPlus 自动维护DDL
- 飞书流程审核处理(存储 DDL 通过流程,DBA 执行后发布)
- DMS 协同管理
- Mybatis-Mate表结构自动维护(收费)
flyway
数据库版本管理主要是对DDL定义版本管理
不是对数据版本管理,如果需要这种功能,还是要看一点阿里云DMS提供的协同工具实现
一、什么是Flyway?
Flyway是一款开源的数据库版本管理工具,主要是用于数据库版本管理并且跟踪数据库变更。
主要特性有:
- 普通SQL:纯SQL脚本(包括占位符替换)没有专有的XML格式,没有锁定。
- 无限制:使用Java 代码来进行一些高级数据操作
- 零依赖:只需运行在Java6(及以上)和数据库所需的JDBC驱动
- 约定优于配置:迁移时,自动查找系统文件和类路径中的SQL文件或Java类
- 高可靠性:在集群环境下进行数据库升级是安全可靠的
- 自动迁移:使用Fly提供的API,让应用启动和迁移同时工作
- 快速失败:损坏的数据库或失败的迁移可以防止应用程序启动
- 数据库清理:在一个数据库中删除所有的表、视图、触发器,而不是删除数据库本身
二、为什么要用Flyway?
- 实际开发的时候,不同的开发人员在开发产品时,都有可能更新数据库,当开发人员完成了对数据库更的SQL脚本后,如何快速地在其他开发者机器上同步?并且如何在测试服务器上快速同步等等问题
- 当升级失败时(比如在升级过程中出现网络连接失败),我们应当支持对失败进行修复。
上面遇到的问题可以通过Flyway进行解决:
- Flyway 可以实现自动化的数据库版本管理
- Flyway 在开发过程中能及时更新数据库的变化
- 更新失败 Flyway 还可以对失败进行修复
- Flyway 能够记录数据库版本更新记录
三、Flyway工作原理
Flyway对于数据库的版本管理主要是由名为
SCHEMA_VERSION
的 Metadata(元数据)表和7种命令完成。元数据表则是用来记录所有版本演化和状态。 官网文档- Metadata Table
Flyway中最核心的,用于记录所有版本演化和状态的Metadata Table,在初始化Flyway时会创建名为
SCHEMA_VERSION
的 Metadata Table。表结构如下Field | Type | Null | Key | Default |
version_rank | int(11) | NO | MUL | NULL |
installed_rank | int(11) | NO | MUL | NULL |
version | varchar(50) | NO | PRI | NULL |
description | varchar(200) | NO | ㅤ | NULL |
type | varchar(20) | NO | ㅤ | NULL |
script | varchar(1000) | NO | ㅤ | NULL |
checksum | int(11) | YES | ㅤ | NULL |
installed_by | varchar(100) | NO | ㅤ | NULL |
installed_on | timestamp | NO | ㅤ | CURRENT_TIMESTAMP |
execution_time | int(11) | NO | ㅤ | NULL |
success | tinyint(1) | NO | MUL | NULL |
四、Migration迁移操作
Flyway不限定脚本里面的内容,但是对脚本文件的名称有一定的要求,基于约定由于配置的原则,不同的类型通过文件命名方式进行区分
版本迁移(Versioned Migrations)以V开头,只会执行一次;
回退迁移(Undo Migrations)以U开头,执行一旦发生破坏性更改,就会很麻烦,项目中一般不用;
可重复执行迁移(Repeatable Migrations)以R开头,每次修改后都会重新执行。

Mysql SpringBoot
PostgrelSQL
参考文献
flyway
flyway • Updated Mar 24, 2025
Flyway
mahuanfy • Updated Feb 7, 2025
No database found to handle or Unsupported Database
📢 Modular Flyway V10 (No database found to handle or Unsupported Database)
Updated Dec 2, 2024
Loading...