前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot使用flayway自动执行数据库升级脚本

SpringBoot使用flayway自动执行数据库升级脚本

作者头像
lyb-geek
发布2019-03-07 09:31:48
5.8K0
发布2019-03-07 09:31:48
举报
文章被收录于专栏:Linyb极客之路Linyb极客之路

一、添加flayway-core依赖

代码语言:javascript
复制
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>5.0.7</version>
</dependency>

二、配置flayway

代码语言:javascript
复制
spring.flyway.clean-disabled=true #禁止flyway执行清理
spring.flyway.ignore-missing-migrations=true #忽略缺失的升级脚本验证
#升级脚本位置,可以多个,可以给每个环境使用不同位置
spring.flyway.locations=classpath:db/migration,classpath:test/db/migration
##如果我们并不是在项目初就加flyway的话,则在有历史数据的情况下,加入flyway后,将会出现:set baselineOnMigrate to true to initialize the schema history table.解决方法将baselineOnMigrate设置为true。注意,不同版本的设置方法并不相同。有的版本是:spring.flyway.baselineOnMigrate有的则是flyway.baselineOnMigrate
spring.flyway.baselineOnMigrate=true

三、准备升级脚本(注意V1后面是两个下划线),放到spring.flyway.locations指定的目录下()

四、注意事项

1. Fayway在每次应用启动时检测是否有需要执行的升级脚本;

2. 文件名以V作为前缀的,后跟版本号,版本号格式可以为为大版本号(1、2),也可以包含小版本号(1.1或1_1),但是需统一,不能有些有小版本号,有些没有;

3.前缀为V的脚本不可重复执行,每个脚本只会被执行一次。已经执行过的历史版本脚本不能再修改,除非清除flayway的历史记录,重新执行升级脚本,这在生产环境不允许。

前缀为R的脚本,后面无版本号,如R__updateversion.sql,可以重复执行,每次内容发生变化时重启后就会执行。

4. Flyway需要创建存储脚本升级记录用的表,因此需要建表权限,也可以事先建好。默认表名为flyway_schema_history;

五、附录: Flyway配置详解

代码语言:javascript
复制
flyway.baseline-description= # 执行基线时标记已有Schema的描述
flyway.baseline-version=1 # 基线版本默认开始序号 默认为 1. 
flyway.baseline-on-migrate=false # 针对非空数据库是否默认调用基线版本 , 这也是我们上面版本号从 2 开始的原因
flyway.check-location=false # 是否开启脚本检查 检查脚本是否存在 默认false
flyway.clean-on-validation-error=false # 验证错误时 是否自动清除数据库 高危操作!!!
flyway.enabled=true # 是否启用 flyway.
flyway.encoding=UTF-8 # 脚本编码.
flyway.ignore-failed-future-migration=true # 在读元数据表时,是否忽略失败的后续迁移.
flyway.init-sqls= # S获取连接后立即执行初始化的SQL语句
flyway.locations=classpath:db/migration # 脚本位置, 默认为classpath: db/migration.
flyway.out-of-order=false # 是否允许乱序(out of order)迁移
flyway.placeholder-prefix= # 设置每个占位符的前缀。 默认值: ${ 。 
flyway.placeholder-replacement=true # 是否要替换占位符。 默认值: true 。 
flyway.placeholder-suffix=} # 设置占位符的后缀。 默认值: } 。 
flyway.placeholders.*= # 设置占位符的值。
flyway.schemas= # Flyway管理的Schema列表,区分大小写。默认连接对应的默认Schema。
flyway.sql-migration-prefix=V # 迁移脚本的文件名前缀。 默认值: V 。 
flyway.sql-migration-separator=__ # 迁移脚本的分割符 默认双下划线
flyway.sql-migration-suffix=.sql # 迁移脚本的后缀 默认 .sql
flyway.table=schema_version # Flyway使用的Schema元数据表名称 默认schema_version
flyway.url= # 待迁移的数据库的JDBC URL。如果没有设置,就使用配置的主数据源。
flyway.user= # 待迁移数据库的登录用户。
flyway.password= # 待迁移数据库的登录用户密码。
flyway.validate-on-migrate=true # 在运行迁移时是否要自动验证。 默认值: true 。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、添加flayway-core依赖
  • 二、配置flayway
  • 三、准备升级脚本(注意V1后面是两个下划线),放到spring.flyway.locations指定的目录下()
  • 四、注意事项
  • 五、附录: Flyway配置详解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档