数据库Migration Tools详解

简述

  Migration Tools是一个能帮你自动执行、管理和校验SQL脚本的工具。

  常见的Tools有Flyway、Liquibase、Mybatis Migrations

  这里我们介绍Flyway的使用

基本使用

  我们在项目中可以创建一个Migration文件夹,里面存放我们希望数据库执行的sql文件,文件名要符合规范

  Flyway的脚本类型分版本控制类和可重复执行类

  首先是版本控制类,分别由 V版本号__描述 组成

  可重复执行类

Flyway使用配置

springboot配置方

  首先引入flyway的依赖,这里使用gradle引入

implementation 'org.flywaydb:flyway-core:5.2.4'

  然后在application.yml对flyway进行配置

flyway:
    #如果数据库不是空表,需要设置成 true,否则启动报错
    baseline-on-migrate: true
    #flyway自动配置 true 开启
    enabled: true
    #设定 SQL 脚本的目录,多个路径使用逗号分隔
    locations: classpath:db/migration
    # 版本控制日志表,默认flyway_schema_history
    table: flyway_schema_history
    # 数据库名称
    schemas: flyway_demo

gradle插件方式

  Flyway可以通过gradle插件的方式运行,在build.gradle中的plugins一栏加入Flyway插件

plugins {
    id "org.flywaydb.flyway" version "5.2.5"    
}

  然后在build.gradle文件的下方配置flyway的配置项

flyway {
    url = '数据库连接url'
    user = '用户名'
    password = '密码'
    baselineOnMigrate = true
    enabled = true
    locations: classpath = db/migration
    table = flyway_schema_history
    schemas = flyway_demo
}

Flyway常用命令

  我们可以通过gradle命令行的方式运行Flyway命令,例如:

./gradlew flywayMigrate -i
Migrate 顺序执行当前所有脚本
Info 展示当前Migrate的状态信息,包含未执行的和已执行的
Validate 校验当前的Flyway脚本是否正确,会和数据库中已执行的脚本作比较
Baseline 在非空的数据库中初始化flyway,需查看flyway_schema_history当前应该新建的版本好号
Repair 清空当前执行错误的脚本,并更新有变化脚本的信息(谨慎使用)

Repair

  当一个脚本执行失败后,修改里面的内容再次执行也是会失败的,因为flyway会记录执行失败的checksum值

  就需要Repair命令,更新所有脚本,但需要慎重使用,因为可能会不小心改到对的脚本

  作为代替我们可以新增脚本,或者我们可以手动删除flyway_schema_history的错误字段

一些使用flyway的奇怪问题

  gradle中的plugins中"org.springframework.boot"的版本需要为'2.5.8'时才支持mysql5.7,2.7.5不支持,其他版本未知

  依赖需引入jpa,flyway才能在springboot启动时自动执行

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

 

 

References

https://www.cnblogs.com/softidea/p/6249534.html

 

 

 

 

 

 

 

 

posted @ 2022-11-14 00:51  艾尔夏尔-Layton  阅读(187)  评论(0编辑  收藏  举报