您的位置:首页 > 产品设计 > UI/UE

liquibase安装

2015-08-04 09:51 633 查看
1 安装

环境要求:Liquibase 2.x requires Java 1.5+, Liquibase 3.x requires Java 1.6+。

1.1 Java的安装及配置

如果系统已安装java可忽略此步骤,查看是否安装java使用命令java -version。

1.1.1 Windows安装

1)下载

首先到oracle官网(http://www.oracle.com/technetwork/java/javase/downloads/index.html)下载最新版本的JDK。

2)安装

安装完成,假设安装目录是:C:\Program Files\Java\jdk1.7.0_25。

3)配置环境变量

选择我的电脑属性---高级---环境变量(或者使用window+Pause Break组合键);

然后在系统变量中新建:

a) 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0_25

b) 系统变量中有一个Path变量,编辑此变量,在其前面加%JAVA_HOME%\bin;(注意分号)

c) 编辑系统变量中Classpath变量 在其前面加上 .;%JAVA_HOME%\bin;(注意在路径前加上点号代表当前路径)。

4)完成

如果安装好了,点击开始---运行---cmd 运行java和javac命令会出现帮助文档。

1.1.2 Linux下安装

快捷的安装方式是直接使用sudo apt-get install openjdk-7-jre-headless

可以参考一下这篇文章进行安装:http://www.linuxidc.com/Linux/2012-10/71557.htm

1.2 Liquibase的安装

1.2.1 下载

官网下载地址:http://www.liquibase.org/download/index.html

1.2.2 安装

解压缩下载的liquibase.zip,本文测试选择的是最新版本的,也就是liquibase-3.0.2版本,解压后的javadoc文件目录可以手工删除掉。假设安装目录是F:\liquibase。

配置环境变量,添加LIQUIBASE_HOME,值为F:\liquibase。添加到 Path变量,编辑此变量,在其前面加%LIQUIBASE_HOME%;

 

2 使用

要开始使用 LiquiBase,需要以下四个步骤:

1)创建一个数据库 变更日志(change log)文件;

2)在变更日志文件内部创建一个 变更集(change set);

3)通过命令行或构建脚本对数据库运行变更集;

3)检验数据库中的变更。

2.1 创建一个变更日志和变更集

要运行 LiquiBase,首先要创建一个数据库变更日志文件,我们采取SQL格式来创建。

官方手册参考:http://www.liquibase.org/documentation/sql_format.html

格式化SQL文件

关于SQL语句的语法依赖于选择的数据库类型,以下语法仅适用于mysql为例。Liquibase是通过SQL注释“--”来标记标签的,每个SQL文件必须开头加入一下声明:

--liquibase formatted sql

Changesets变更集

每个变更集开始处都必须添加一些声明信息:

--changeset author:id attribute1:value1 attribute2:value2 [...]

其中,author:id是必须的,其他的参数可以使用默认值,暂不修改。每个变更集可以带一个或者多个SQL声明,默认使用“;”隔开,每个变更集生成一条对应的记录。

示例一:一个SQL文件一个changeset、一个changeset执行多条SQL语句的情况,以下示例数据库里面只会生成一条记录。

Release0003.sql

--liquibase formatted sql

--changeset gpl:Release0003-1
CREATE TABLE table3 (
id int(11) NOT NULL,
name varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;
ALTER TABLE  table3 CHANGE  id  id INT( 11 ) AUTO_INCREMENT;
ALTER TABLE  table3 CHANGE  name  firstname VARCHAR( 255 );
INSERT INTO table3 (id, firstname) VALUES (NULL, 'name1'),(NULL, 'name2'), (NULL, 'name3');
--rollback drop table table3;


示例二:一个SQL文件多个changeset、一个changeset执行一条SQL语句的情况。

Release0004.sql

--liquibase formatted sql

--changeset gpl:Release0004-1
CREATE TABLE table2 (
id int(11) NOT NULL,
name varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;
--rollback drop table table2;

--changeset gpl:Release0004-2
ALTER TABLE  table2 CHANGE  id  id INT( 11 ) AUTO_INCREMENT;
--rollback ALTER TABLE  table2 CHANGE  id  id INT( 11 ) NOT NULL;

--changeset gpl:Release0004-3
ALTER TABLE  table2 CHANGE  name  firstname VARCHAR( 255 );
--rollback ALTER TABLE  table2 CHANGE  firstname  name VARCHAR( 255 );

--changeset gpl:Release0004-4
INSERT INTO table2 (id, firstname) VALUES (NULL, 'name1'),(NULL, 'name2'), (NULL, 'name3');
--rollback DELETE FROM table2 WHERE firstname IN('name1','name2','name3');


我们实际使用时候也可以是一个SQL文件多个changeset、一个changeset多个SQL,具体使用根据怎么样写对于回滚更方便,目前我们看到的是一个changeset只能执行一次回滚命令。所以,对于一个changeset多条SQL命令的情况,还不知道怎么写回滚,除非是针对一个表的操作,如上述示例一所示。

2.2 从命令行运行 LiquiBase

定义完变更集后,可以从命令行运行 LiquiBase。

MySQL:

liquibase --changeLogFile=F:/liquibase/Release0003.sql

--driver=com.mysql.jdbc.Driver

--classpath=F:/liquibase/lib/mysql-connector-java-5.1.10-bin.jar

--url=
"jdbc:mysql://localhost/liquibaseuseUnicode=true&characterEncoding=UTF-8"
--username=
test
--password=123456

update
Oracle:

liquibase --changeLogFile=F:/liquibase/Release0003.sql

--driver=oracle.jdbc.OracleDriver

--classpath=F:/liquibase/lib/ojdbc6.jar

--url=
"jdbc:oracle:thin:@localhost:1521:liquibase"
--username=
test
--password=123456

update
在本例中,运行 LiquiBase 传入的内容:

  数据库驱动器

  数据库驱动器 JAR 文件的位置所在的类路径

  所创建的变更日志文件名称为 Release0003.sql

  数据库的 URL

  用户名和密码

关于以上URL的value值,下面简单说一下:

Mysql:jdbc:mysql://localhost/liquibase localhost改成实际的数据库URL,liquibase改成实际数据库的名称。

Oracle:jdbc:oracle:thin:@localhost:1521:liquibase localhost:1521改成实际的数据库URL,1521表示数据库的端口号,liquibase改成实际数据库的SID。

对于以上classpath的路径,官方手册上面说明的是放到lib目录下可以自动加载,但是实际上却未加载,所以暂时只能写完整路径了。涉及到的驱动可以到附件中下载。

 

最后,清单 2 调用 update命令告诉 LiquiBase 将变更应用到数据库中。

2.3 数据库的回滚操作

在上述的变更日志和变更集中我们注意到每个变更集后面都加了一个--rollback注释,后面的SQL表示当执行回滚命令时,需要执行的SQL语句。对于我们确定以后不会撤销的操作,变更日志文件中的changeset后面页可以不用定义rollback,也就是说我们可以在需要执行rollback的时候再添加相应changeset的rollback,不影响我们部署SQL,只是当我们部署SQL时候要根据rollback的方便性来格式化SQL语句。

假如我们想撤销对于Release0003.sql的操作,我们就可以使用rollback了。

执行命令

liquibase --changeLogFile=F:/liquibase/Release0003.sql

--driver=com.mysql.jdbc.Driver

--classpath=F:/liquibase/lib/mysql-connector-java-5.1.10-bin.jar

--url=
"jdbc:mysql://localhost/liquibase?useUnicode=true&characterEncoding=UTF-8"
--username=
test
--password=123456 

rollbackToDate 2013-07-16T16:55:37
执行以上命令的意义:我们可以撤销变更日志文件./Release0003.sql中2013-07-16 16:55:37之后进行的操作。

里面的参数基本和update一致,关于rollback的参数暂时还没有找到一种更方便的方式来针对SQL格式的回滚,针对tag的形式尙需要进一步探究。

 

以上研究的范围有限,可能会有疏漏,如有错误,请指出。

关于Liquibase 执行 changelog 中文乱码的解决方法:

参考文章:http://www.penglig.com/post-323.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  liquibase