简介
数据库迁移及版本控制工具, 用于维护不同环境下数据库的一致性
使用
引入依赖
implementation(“org.flywaydb:flyway-core:7.1.1”)
配置
spring:flyway:enabled: truelocations: classpath:sqlbaseline-on-migrate: trueclean-disabled: true
enabled: true # 开启Flyway(默认true)
locations: classpath:sql # 迁移脚本的位置(默认为classpath:db/migration)
baseline-on-migrate: true # 在没有元数据表的情况下,针对非空Schema执行迁移时是否自动调用基线, 开始执行基准迁移时对现有的schema的版本打标签, 默认版本值为1. 非空数据库则不执行V1_base.sql语句.
clean-disabled: true # 是否禁用clean操作,默认false,改为使用true
简单约定 迁移脚本放入sql/migration中, 基线版本命名为V1_base.sql
-
注释
跨越整行的单行 (-) 或多行 (/* */) 注释 -
文件命名规则
前缀+版本+分隔符+描述符+后缀: example-- V1.0__alter_user.sql 前缀:V用于版本化迁移、U撤消迁移、R可重复迁移
版本:下划线(在运行时自动由点替换)分隔任意多个部分(不适用于可重复迁移)
分隔符:(__两个下划线)
描述:下划线(运行时自动替换为空格)分隔单词 -
升级规则
springBoot应用运行时flyway会根据脚本进行数据库的初始化,执行的顺序会根据脚本版本号由低到高按顺序执行(1.0 -> 1.0.1 -> 1.0.2),每执行完一个版本脚本都会向记录表flyway_history_schema插入一条数据。 -
实用特性
试运行模式 – 不再修改数据库,而是将所有本应应用的 SQL 语句发送到试运行输出(调试)
批处理模式 – 批处理迁移脚本(高性能)