flyway

flyway用于数据库脚本升级的管理工具

flyway在第一次使用的时候需要一个元数据表,叫做schema_version. 用来记录数据库迁移(或者更新的历史),这张表不需要手动建立,flyway会自己生成这张表,但是需要注意的是,这张表的首行必须是一条baseline,就像这样一样

这行可以在springboot的配置文件中加入,就像这样

它是一个基行,从他开始记录

表中version字段为主键。
约定大于配置,在flyway中,有好几种数据库升级的方式,可以使用sql脚本,也可以使用java的方式,约定java类用这样的方式命名,最后会被flyway解析成3.11就像第一张图的样子,类或者sql脚本放在scr/main/java/db/migration文件夹下,这是约定

1
2
3
4
5
(maven依赖)
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>

在springboot中,可以在类中实现SpringJdbcMigration来当做升级脚本使用

类似于这样,实现的方法中的参数jdbcTemplate会由spring注入,使用jdbcTemplate操作数据库

使用:
按照上述写好后,启动springboot的过程中会自动扫描schema表和db/migration下的版本脚本,并且执行相关脚本

注意:
flyway会按照版本号递增来执行脚本,比如文件夹下脚本有v1.1和v.12两个,SCHEMA表中只存在v1.1,那么flyway只会执行v1.2
但是,如果SCHEMA表中有v1.2却没有v1.1,那么程序启动会报错