sproutcat.github.io

Flyway 的使用笔记

Flyway 是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway 可以像 Git 管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。

这里主要是针对 maven 项目基于 SQL 的迁移使用笔记。

命名规范

数据库迁移脚本命名规则为 V<VERSION>__<NAME>.sql (其中 为版本号,如 1 或者 1.2),如下:

flyway_script_name.png

文件名由以下部分组成:

使用Flyway升级,flyway会自动创建一张历史记录表: flyway_schema_history。

这张表记录了每一次升级的记录,包括已经执行了哪些脚本,脚本的文件名,内容校验和,执行的时间和结果。

发现迁移脚本

Flyway 可以在文件系统和 Java 类路径上发现 SQL 迁移脚本。迁移脚本可以存在一个或多个目录中,可以通过 locations 属性进行设置。

迁移脚本路径

在运行时,通过文件系统和Java类路径扫描自动发现基于SQL的新迁移。配置 locations 好要使用的SQL迁移后,只要它们符合配置的命名约定,Flyway就会自动选择任何新的SQL迁移。

此扫描是递归的。指定目录下非隐藏目录中的所有迁移也将被提取。

更多内容可以查看 Flyway官方文档

Maven 项目添加 Flyway 插件(通用)

Spring boot 项目集成 Flyway

注意:Spring boot 项目配置后 Flyway 后,每次启动服务,都会执行 migrate 命令。 如果出现已执行过的 sql 脚本有变更的情况,需要手动执行 mvn flyway:repair 命令。 因此 Spring boot 项目在集成 Flyway 时,一定要加上 Flyway 插件。