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 插件。