数据库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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2020-11-14 GenericServlet和HttpServlet抽象类
2020-11-14 浮动的特性