- 引用flyway,在pom.xml中引入flyway
<!--引入flyway的相关依赖5.2.1--><dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>5.2.1</version></dependency>
- applicaton.properties配置
#flyway 配置# 是否启用flywayspring.flyway.enabled = true#脚本文件位置spring.flyway.locations = classpath:db/migrationspring.flyway.baseline-on-migrate = false#schema 名称,配置后,如果数据库中不存在对应的schema,则会自动创建spring.flyway.schemas = tollgate
- 数据库脚本规范
每一次数据库脚本更新都是一个新的版本,运行之后,不能再改这个版本,每个微服务独立维护数据库脚本。
命名规范 : V+版本号(纯数字或者以小数点或者以下划线分隔的数字)+__(双下划线)+描述字符串(支持英文和下划线).
版本号:自增,每次都需要增加一位 ,如1,2,3,建议以1.0开始
描述字符串:建议是以操作类型(INIT,UPDATE)加上微服务名称,如果是更新的,再增加更新时间。
举例:
1,V1.0__INIT_TOLLGATE.sql 初始化卡口微服务脚本。
2,V1.1__UPDATE_TOLLGATE_20190522.sql 卡口微服务0522更新脚本
为什么使用flyway?
快速迭代过程,数据库版本难以控制,引入flyway,每次部署自动升级数据库。减少运维人员以及版本维护人员压力,并且能够平滑升级。
对大家有什么要求?
要求大家自己维护好脚本,对数据库做出的修改们需要把脚本按照命名规范放到指定的目录
有什么注意事项?
不支持降级,支持事务回滚,千万不要手动更改数据库表结构!!!更新前,做好备份!
flyway的初始创建有三个注意事项 :
1、db.migration不要这样创建文件件 因为 classpath:db/migration不等于db.migration,因此最好先建立db文件夹,在建立migration文件夹;
2、最好不要使用@PostConstruct注解,因为启动微服务时会先启动PostConstruct里的方法,后启动flyway,可能造成方法无法读取还没有创建的数据库表;如果要使用,则使用下图注解
@DependsOn("flywayInitializer")
修饰
3、V1.0__INIT_TOLLGATE.sql第一个是两个下划线,请注意!
4.使用R可以重新执行已经修改过的sql文件
例子: R__
V1.0__INIT_TOLLGATE.sq