1、导入依赖
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.2.4</version>
</dependency>
2、编写配置文件
spring:
flyway:
# 是否启用flyway
enabled: true
# 编码格式,默认UTF-8
encoding: UTF-8
# 迁移sql脚本文件存放路径,默认db/migration
locations: classpath:db
# 迁移sql脚本文件名称的前缀,默 认V
sql-migration-prefix: V
# 迁移sql脚本文件名称的分隔符,默认2个下划线__
sql-migration-separator: __
# 迁移sql脚本文件名称的后缀
sql-migration-suffixes: .sql
# 执行迁移时是否自动调用验证 当你的 版本不符合逻辑 比如 你先执行了 DML 而没有 对应的DDL 会抛出异常
validate-on-migrate: true
# 如果没有 flyway_schema_history 这个 metadata 表, 在执行 flyway migrate 命令之前, 必须先执·行 flyway baseline 命令
# 设置为 true 后 flyway 将在需要 baseline 的时候, 自动执行一次 baseline
baseline-on-migrate: true
# metadata 版本控制信息表 默认 flyway-schema-history加服务名称
table: flyway-schema-history-${spring.application.name}
# 指定 baseline 的版本号,默认值为 1, 低于该版本号的 SQL 文件, migrate 时会被忽略
baseline-version: 0
注意:同时需要配置连接源
3、创建sql文件、并启动项目
按照配置的规则命名就行
从上图可以看出在项目启动时会先创建一个管理db的表,再运行我们编写在项目中的sql并记录下来,在本地开发阶段的话,你如果嫌每次改表的字段都需要删除现有的表和管理表的记录很麻烦的话,你可以手动修改,然后修改管理表中对应记录的checksum字段,checksum在项目运行会校验并返回新的
4、多服务同数据库下把以下参数改成false
validate-on-migrate: false
或者命名注意版本、或者将db放入公共服务中
总结:
这样做的好处就是如果企业有一套以上的环境,并且每套环境都配有对应的数据库,如果这时候没有数据版本控制工具的话,是不是每更新一套环境都需要去本次更新锁更改的db,万一改错了还会导致项目出bug,如果集成了flyway的话就不用考虑这些问题,因为我们的建表db、插入字段等等都可以写在项目中,项目启动之后就会去更新连接的数据源