它是谁
flyway是一款开源的数据库版本管理工具,它可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置。Migrations可以写成SQL脚本,也可以写在Java代码中,本文主要是看一下它在springboot中的表现。
Why database migrations?
首先我们以为我们连接的DB是这样的:
结果在项目中发现我们连的DB是这样的:
各自在自己分支开发的时候还好,但是合并代码以及上线后数据库统一就成了问题了。我们总不能改一点数据库就把sql语句拿着去改各个服务器的DB吧(万一漏掉哪个不是很蛋疼)
于是我们就引入了flyway,让它帮我们管理DB,引入之后会在我们数据库中生成对应的flyway_schema_history表用来记录sql执行情况
在springboot中的使用
引入依赖
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.0.7</version>
</dependency>
flyway的配置
# 数据库版本管理
flyway:
# 启用或禁用 flyway
enabled: false
# 字符编码 默认 UTF-8
encoding: UTF-8
# 执行迁移时是否自动调用验证
validate-on-migrate: true
# 禁止清理数据库表
clean-disabled: true
# 如果数据库不是空表,需要设置成 true,否则启动报错
baseline-on-migrate: true
# 与 baseline-on-migrate: true 搭配使用
baseline-version: 0
# 脚本位置(默认)
locations: classpath:db/migration
如果想进一步了解的话,可以去官方网站康康