官网地址:http://mybatis.org/migrations
GitHub 地址:https://github.com/mybatis/migrations
简介(出自 ChatGPT)
MyBatis Migrations 是一款基于 SQL 的数据库版本控制系统,它由 MyBatis 团队开发。该工具的设计目标是为了简化数据库迁徙过程,以便更好地追踪、治理和利用数据库模式的变更。
以下是 MyBatis Migrations 的一些次要个性:
- SQL 为核心:MyBatis Migrations 是基于 SQL 的,这意味着数据库迁徙脚本是用 SQL 语言编写的。这样的设计使得数据库管理员和开发人员能够间接应用相熟的 SQL 语言来治理数据库模式的变更。
- 反对撤销操作:MyBatis Migrations 提供了撤销操作,这使得你能够不便地撤销最近的数据库模式变更。每个迁徙脚本都蕴含两局部:一部分用于执行数据库变更,另一部分用于撤销这些变更。
- 主动版本控制:每次你执行一个新的数据库迁徙,MyBatis Migrations 都会在一个非凡的表(默认名为
changlog
)中记录这次变更。这使得你能够很容易地查看历史变更,以及查看哪些迁徙曾经被利用,哪些还未被利用。 - 灵活性和可定制性:MyBatis Migrations 容许你定制迁徙过程。例如,你能够抉择在什么工夫利用哪些迁徙,你也能够抉择是否执行撤销操作。
- 反对命令行和编程式 API:你能够通过命令行工具来应用 MyBatis Migrations,也能够在你的 Java 代码中调用 MyBatis Migrations 的 API。
MyBatis Migrations 是一款十分实用的数据库版本控制工具,尤其适宜喜爱间接应用 SQL 治理数据库模式的团队。
📣 留神❗️❗️❗️
MyBatis Migrations 是一个 Java 工具,因而您必须装置 Java 能力持续。用户至多须要 Java 运行时环境(JRE),而装置 Java 开发工具包 (JDK) 则更好。MyBatis Migrations 须要 Java 版本 8 或更高版本。
🏗装置
1. 下载我的项目压缩包
下载地址址:点击下载 mybatis-migrations-3.3.11
2. 解压到自定义目录
解压后目录文件构造:
mybatis-migrations-3.3.11
- lib/mybatis-${project.version}.jar
- lib/mybatis-migrations-${project.version}.jar
- bin/migrate ————————————–(linux 执行命令)
- bin/migrate.cmd ———————————(windows 执行命令)
- LICENSE
- NOTICE
- MIGRATIONS-README
3. 配置环境变量
-
Mac 零碎
-
编辑
.bash_profile
文件,文件最初追加如下内容:export MIGRATIONS_HOME=/Users/superman/ 工具 /mybatis-migrations-3.3.11 export PATH="$MIGRATIONS_HOME/bin:$PATH"
MIGRATIONS_HOME 的值为我的项目包的目录门路
- 执行命令
source .base_profile
使环境变量配置失效 - 验证是否配置胜利,执行命令
migrate info
输入后果如下则表明配置胜利
-
🏃开始应用
新建一个空目录
mkdir test
进入 test
目录,执行初始化命令
migrate init
在 test 目录下会主动生成 3 个目录
- drivers ———— JDBC 驱动库,.jar 或 .zip 文件
- environments —– 数据库配置文件
- scripts ———— 迁徙脚本
下载 JDBC 驱动文件
这里以 PostgreSQL
为例,下载地址:https://jdbc.postgresql.org/download/
将下载好的 jar
包,放到 drivers
目录下即可
配置文件
environments
目录有一个默认配置文件development.properties
还能够创立local.properties
pro.properties
文件
运行迁徙时,能够应用--env=<environment>
选项指定环境(不蕴含门路或.properties
局部)
如:migrate up --env=local
配置示例 – 数据库配置
## JDBC connection properties.
driver=org.postgresql.Driver
url=jdbc:postgresql://127.0.0.1:54320/test
username=homestead
password=secret
验证数据库是否连贯胜利
输入内容没有报错信息表明胜利,没有胜利依据报错信息进行排查
migrate status
应用
常用命令:
migrate new
migrate up
migrate down
初始化数据库配置(新库能够疏忽此步骤)
脚本文件位于 ./script/bootstrap.sql
,通常用来定义你在开始应用 MyBatis Migrations
治理数据库版本之前,数据库中曾经存在的表和数据,bootstrap.sql
文件的具体内容将取决于你的数据库的现状。
文件应该蕴含你数据库中所有曾经存在的表的创立语句,以及其余任何你须要记录的数据库状态(如索引、视图、存储过程等)
migrate bootstrap
新建迁徙脚本
migrate new "create users table"
该命令将创立了一个 sql 文件,格局为:工夫戳_自定义形容.sql
20230528075331_create_users_table.sql
默认前缀为 工夫戳,当然也能够在初始化 init 命令加上参数 –idpattern=0000 来设置前缀
migrate --idpattern=0000 init
migrate new "create users table"
这时候新创建的迁徙脚本文件名前缀就发生变化了
0003_create_users_table.sql
脚本文件内容格局:
-- // create users table
-- Migration SQL that makes the change goes here. 更改脚本语句放在这里,如 CREATE TABLE xxx()
-- //@UNDO
-- SQL to undo the change goes here. 回滚脚本语句放在这里,如 DROP TABLE xxx
开始迁徙
- 先查看一下以后状态
mybatis-migrations/db/test$ migrate status
------------------------------------------------------------------------
-- MyBatis Migrations - status
------------------------------------------------------------------------
ID Applied At Description
================================================================================
1 ...pending... create changelog
2 ...pending... first migration
3 ...pending... create users table
- 执行
migrate up
- 查看一下状态
mybatis-migrations/db/test$ migrate status
------------------------------------------------------------------------
-- MyBatis Migrations - status
------------------------------------------------------------------------
ID Applied At Description
================================================================================
1 2023-05-30 00:26:23 create changelog
2 2023-05-30 00:26:23 first migration
3 2023-05-30 00:26:23 create users table
- 执行
migrate down
- 查看一下状态
mybatis-migrations/db/test$ migrate status
------------------------------------------------------------------------
-- MyBatis Migrations - status
------------------------------------------------------------------------
ID Applied At Description
================================================================================
1 2023-05-30 00:26:23 create changelog
2 2023-05-30 00:26:23 first migration
3 ...pending... create users table
🔥命令列表
命令格局:migrate {命令}
命令 | 作用 | 示例 | 形容 |
---|---|---|---|
info | 显示构建版本信息 | migrate info | |
init | 创立并初始化迁徙脚本的存储库 | migrate init | –path 指定生存储库地位,默认当前目录(必须为空目录),–idpattern 设置生成脚本文件的前缀,默认为以后工夫戳 |
bootstrap | 执行数据库起始脚本,初始化数据库 | migrate bootstrap | 执行数据库起始脚本,创立迁徙脚本基线(用于已存在的数据库) |
new | 创立迁徙脚本 | migrate new “create users table” | 依据模板在 ./scripts 目录下创立前缀为 –idpattern (默认工夫戳) 的脚本 “create blog table” 为生成的脚本形容生成的文件名为 “(前缀 + create_blog_table)” |
up | 提交并执行迁徙脚本 | migrate up | 顺次运行所有待处理迁徙脚本的 do 局部 |
down | 回滚迁徙脚本 | migrate down | 执行迁徙脚本的 undo 局部,并使状态变为 pending,默认回退一个版本,前面加上数字可指定回退 n 个版本 |
version | 执行到指定版本的迁徙脚本 | migrate version 20230526032814 | 版本小于等于 20230526032814 并且状态为 pending 的所有迁徙脚本都会执行 do 局部,版本大于 20230526032814 并且状态为已 up 的所有迁徙脚本都会执行 undo 局部 |
pending | 执行有抵触的迁徙脚本 | migrate pending | 当你 new 一个 script 且没有 up 之前,有另外的人 new 了一个 script 且 up 了,此时你执行 up 将会不胜利,你须要先确定你的 script 与之无抵触之后执行 pengding |
status | 显示以后迁徙脚本状态 | migrate status | 查看当前工作空间状态 Applied At 为提交工夫 pending 示意状态为待执行 |
script | 合并迁徙脚本 | migrate script 版本 1 版本 2 > do.sql | 合并“版本 1”到“版本 2”的 do 脚本,从小到大合并的是 do 脚本 |
migrate script 版本 2 版本 1 > undo.sql | 合并“版本 2”到“版本 1”的 undo 脚本,从大到小合并的是 undo 脚本 | ||
migrate script pending > pending.sql | 合并状态为 pending 的 do 脚本 |