官网: https://flywaydb.org/documentation/api/

Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本。

在项目或产品中,很难一开始就把业务理清楚,把数据库表设计好,因此数据表也会在迭代周期不断迭代。在Java应用程序中使用Flyway,能快速有效地用于迭代数据库表结构,并保证部署到测试环境或生产环境时,数据表都是保持一致的。(本人之前接触项目时候有使用,确实可以避免部署新环境时候遗漏SQL脚本)

Maven项目:

引入jar坐标

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>5.2.1</version>
</dependency>

配置文件配置1(enabled:为true时开启flyway执行脚本):

flyway:
  enabled: false
  validate-on-migrate: true
  table: schema_version
  baselineOnMigrate: true

项目配置文件下导入SQL要执行的脚本(举例):

Flyway 使用流程(简单使用)_sql

脚本依赖添加规则按升序添加版本号,V__ .sql

Flyway 使用流程(简单使用)_SQL_02

注意:名称中和 之间是两个下划线!(举例):V1.0.1__init_tables.sql 延续版本 V1.0.2__init_tables.sql 以此类推;

脚本文件是SQL完整语句;

版本要对应,后面的说明可以随意,最好与SQL执行语句语义相同;

当系统升级时又需要做数据迁移,我们只需在 db/migration 目录下再放置新版本的 sql 文件即可。

如果 flyway 不是项目初期引入,而是在数据库已有表的情况下引入时必须设置 baseline-on-migrate: true,设置该配置启动项目后,flyway 就会在数据库中创建 schema_version 表,并且会往该表中插入一条 version = 1 的建表记录,如果迁移数据有 V1__ 开头的文件,扫描文件会忽略该文件不执行迁移,进而可能引发其他迁移数据出错的问题。

当执行脚本为已经执行了没有报错的情况下就会跳过执行;不会进行2二次操作;

在使用过程中,当启动项目报错看具体报错参数进行修改,有时候是执行记录表配置参数不一致导致,需要找到记录表修改表对应数据;与之对应;