flyway的使用
flyway配置: 本章主要说明flyway的配置
一、配置说明
添加springboot配置,在application.yml/application.properties配置文件中加入:
spring:
# flyway配置
flyway:
# 是否启用flyway
enabled: true
# 编码格式,默认UTF-8
encoding: UTF-8
# 迁移sql脚本文件存放路径,官方默认db/migration
locations: classpath:flyway/sql/mysql
# 迁移sql脚本文件名称的前缀,默认V
sql-migration-prefix: V
# 迁移sql脚本文件名称的分隔符,默认2个下划线__
sql-migration-separator: __
# 避免带${}sql执行失败
placeholder-prefix: '#('
placeholder-suffix: )
# 迁移sql脚本文件名称的后缀
sql-migration-suffixes: .sql
# 迁移时是否进行校验,默认true
validate-on-migrate: true
# 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
baseline-on-migrate: true
# 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库
clean-disabled: true
二、按脚本命名规范置入SQL脚本,启动项目
将变更的SQL脚本,按照脚本命名(下面介绍)规范创建sql文件,置入flyway/sql/mysql目录(可配置)下,启动项目;项目启动后系统会自动创建flyway_schema_history表,执行SQL变更脚本,并插入脚本执行记录至该表.
脚本命名
1.仅需要被执行一次的SQL命名以大写的"V"开头,后面跟上"0~9"数字的组合,数字之间可以用“.”或者下划线"_"分割开,然后再以两个下划线分割,其后跟文件名称,最后以.sql结尾
V[年月日]_[序号]__[模块名缩写]_[操作类型]_[业务描述].sql
例如:
V20240104_1__easyoa_add_field_attendance.sql
2.可重复运行的SQL,则以大写的“R”开头,后面再以两个下划线分割,其后跟文件名称。
R__[模块名缩写]_[业务描述].sql
例如:
R__easyoa_update_user.sql
>1.版本号需要唯一,否则Flyway执行会报错;如果V__脚本.sql,已经执行过了,不能修改里面的内容,再次执行Flyway就会报错。
2. R开头的脚本.sql,允许脚本内容的修改,如有变化可以执行多次。 3.V开头的SQL执行优先级要比R开头的SQL优先级高。
三、支持范围
目前项目引入的flyway是7.15.0版本,支持MYSQL5.7及以上版本
如果需要支持mysql5.6,可以降低为5.2.1版本
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.2.1</version>
</dependency>
- 报错:Caused by: java.sql.SQLException: sql injection violation, dbType mysql, druid-version 1.2.19, comment not allow : 解决方案: