持续交付项目中,项目会不断的迭代上线,这是会出现数据库的改动问题。在一个还未上线的项目中,我更改数据库可以使用简单的直接对sql进行更改,但是面对一个已投入使用的系统而言,每次部署都对数据库进行init显得有点不太可能。于是便有了数据库Migration的诞生。
我所在的项目是SpringMVC配合Mybatis的开发框架。作为一个数据库集成框架,Mybatis在使用上还是比较方便的。言归正传,为了项目需要,于是便开始了Mybatis Migration的初探,文章中出现的不妥之处还请大家不吝赐教。
Mybatis Migration 安装
安装过程主要参照Mybatis的官网: http://mybatis.github.io/migrations/index.html,以及Mybatis源代码授权地址: https://github.com/mybatis/migrations,参照github上的README文件可以轻易的完成其安装过程。README文件中所有的Mybatis包可以直接在其Git repo的releases中找到,我选择了3.2.0进行下载安装。安装完成后就可以直接在terminal中运行migrate相关的命令了。
Mybatus Migration 初始化
minggong:migration-test minggong$ migrate init
------------------------------------------------------------------------
-- MyBatis Migrations - init
------------------------------------------------------------------------
Initializing: .
Creating: environments
Creating: scripts
Creating: drivers
Creating: README
Creating: development.properties
Creating: bootstrap.sql
Creating: 20140817132704_create_changelog.sql
Creating: 20140817132705_first_migration.sql
Done!
------------------------------------------------------------------------
-- MyBatis Migrations SUCCESS
-- Total time: 2s
-- Finished at: Sun Aug 17 18:57:05 GMT+05:30 2014
-- Final Memory: 3M/493M
------------------------------------------------------------------------
minggong:migration-test minggong$ ls
README drivers environments scripts
初始化之后的目录下面会自动生成一些和Migration相关的项目文件及目录 README, drivers, environments, scripts。drivers中放置连接数据库需要的jdbc,environments主要放置连接数据库的地址以及授权信息等,scripts目录下则放置数据库相关的sql,init的时候就已经生成了上述显示的create_changelog.sql和first_migration.sql文件。
为了以实例说明问题,本次测试采用了mysql数据库,从mysql官网下载了mysql-connector-java-5.1.32
,并对environment的数据库信息进行了简单的配置,配置如下:
## JDBC connection properties.
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/arctic
username=root
password=
这里的arctic是已经存在本地的一个mysql数据库。
Migrate bootstrap
minggong:migration-test minggong$ migrate bootstrap
------------------------------------------------------------------------
-- MyBatis Migrations - bootstrap
------------------------------------------------------------------------
========== Applying: bootstrap.sql =============================================
------------------------------------------------------------------------
-- MyBatis Migrations SUCCESS
-- Total time: 0s
-- Finished at: Sun Aug 17 19:43:29 GMT+05:30 2014
-- Final Memory: 11M/493M
------------------------------------------------------------------------
运行之后,scripts文件中将会生成另外一个bootstrap文件。主要可以进行一些数据库初始化工作。
Migrate new
new
命令能够创建新的sql脚本,我们只需要填充数据表结构信息,便可以方便的创建我们所需的数据表
minggong:migration-test minggong$ migrate new "create blog table"
------------------------------------------------------------------------
-- MyBatis Migrations - new
------------------------------------------------------------------------
Creating: 201408171