导语:
对于软件部门而言产品包括test、dev、demo、staging、production等环境,除了代码版本控制外,数据库schema版本控制也显得尤为重要。数据库版本控制工具的使用,可以减轻人为错误。本文主要介绍通过使用mybatis migration tool来进行数据库版本控制(以下简称MMT)。
1配置
配置MMT之前需要先配置java环境变量。下载MMT并解压,如下图所示lib目录中存放MMT所需jar包,bin目录中存放可执行MMT的bat文件。

配置MMT环境变量如下:
MIGRATIONS_HOME: D:\Software\mybatis-migrations-3.2.0
Path: %MIGRATIONS_HOME%\bin
打开命令行窗口执行"migrate --help"测试MMT如下:

进入项目目录执行'migrate init'初始化MMT环境目录。

初始化后,MMT创建drivers,environments和scripts三个目录。其中drivers目录用来存放数据库驱动所依赖的jar包,environments目录用户配置数据库信息,scripts目录则用来存放数据库脚本。将准备好的数据驱动包放入drivers目录,这里以mysql为例。打开environments目录下的development.properties文件配置开发环境数据源信息如下:

如需要配置其他环境如test、demo、staging、production等,只需要复制development.properties文件修改相应的数据库链接即可。至此MMT的配置工作已经完成,我们可以使用其强大的数据库脚本版本控制功能了。
2MMT数据库版本控制过程
MMT环境配置完成后可以通过执行'migrate new <scriptsName>'来创建脚本。
脚本创建在scripts目录下,其中脚本以名称时间戳开头,如下图MMT要求脚本中编写执行脚本及对应的回滚脚本。

编辑脚本添加执行脚本及其回滚脚本。

执行migrate status查看脚本状态。

如下图所示,其中reate changelog.sql为用于在数据库中创建操作变更日志SQL。其中create changelog.sql为用于在数据库中创建操作变更日志SQL。First_migration.sql只是sample无任何意义。其中pending状态代表等待执行的脚本。

执行migrate up操作。这里有执行create changelog脚本时会出现一个错误。可以通过修改development.properties文件中的send_full_script=false配置解决。

再次执行migrate up,所有pending状态的脚本会依次执行。执行结果如下。

查看数据库,脚本已执行成功。

通过migrate down命令可以回退上一个脚本。

查看数据库脚本已回退。

执行migrate status上一个脚本已经回退。

3MMT总结
migrate常用命令如下:
init:初始化数据库版本控制目录。
new:创建脚本,注意不要自己手动创建脚本始终通过new命令创建新的脚本。
status:查看脚本的状态,处于pending状态的脚本是未执行的脚本。
up:执行处于pending状态的脚本。
down:回退上一次执行的脚本,当然可以多次执行migrate down回退多个脚本。
至此MMT基本功能已经介绍完成,大家可以用MMT管理各自的数据库了。
参考文档:http://mybatis.github.io/migrations/

本文作者:Tom(点融黑帮),现任点融Fin-Tech高级研发工程师,曾任职于IBM。
随着点融网新一轮融资,点融网即将开始大规模的扩张,需要各种优秀人才的加入,如果你觉得自己够优秀,欢迎加入我们!获取更多职位信息,请关注点融黑帮。





