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

一、       添加flayway-core依赖

<dependency>
   
<groupId>org.flywaydbgroupId>
   
<artifactId>flyway-coreartifactId>
   
<version>5.0.7version>
dependency>

 

二、       配置flayway

   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指定的目录下()

Spring Boot使用flayway自动执行数据库升级脚本_第1张图片

四、   注意事项

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

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

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

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

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




你可能感兴趣的:(JavaNotes,Java,Spring,Boot)