author:skate

time:2014/08/18

Database(Mysql)发版控制

The Liquibase Tool related Database

一.Installation & Configration

二.Advanced Usage of the Liquibase

三.Frequently Questions

二.Advanced Usage of the Liquibase

1.实际场景模拟

实际需求:须要把不同环境的不同分支的数据库变更合并,并按需求应用或回滚到不同的DB环境中。实现对DB发版的管理

DB的环境:dev,qa,sandbox,prod

规划DB发版文件夹。如:

database

        Release-2014-05

                       db.Changelog-master.xml

                       000_CreateTable.sql

                       001_Init.sql

                       ....

                       032_Update.sql

        Release-2014-06

                       db.Changelog-master.xml       

                       000_CreateTable.sql

                       001_Init.sql

                       ....

                       192_Update.sql      

        Release-2014-07

                       db.Changelog-master.xml       

                       000_CreateTable.sql

                       001_Init.sql

                       ....

                       132_Update.sql       

                      

                      

db.Changelog-master.xml是数据库变更的主文件,其包含每个数据库的changeset文件,这样能够控制每个changeset的运行顺序和大小,例如以下是一个样例:

# more db.Changelog-master.xml

<?xml version="1.0" encoding="UTF-8" ?>

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">

<preConditions>

            <dbms type="oracle"/>

  </preConditions>

<include file="database/Release-2014-05/000_CreateTable.sql"/>

  <!-- include file="database/Release-2014-05/001_Init.sql"/ -->

  <!-- include file="database/Release-2014-05/032_Update.sql"/ -->

</databaseChangeLog>

# more 000_CreateTable.sql

--liquibase formatted sql

--changeset skate:Release-2014-05_000_CreateTable.sql context:test

CREATE TABLE table3 ( 

 id int(11) NOT NULL, 

  name varchar(255) NOT NULL, 

  PRIMARY KEY (id) 

) ENGINE=Innodb;

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;

或者用xml文件

# more 000_CreateTable.xml

<?

xml version="1.0" encoding="UTF-8" standalone="no"?>

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">

    <changeSet author="Skate" id="Release-2014-05_000_CreateTable.sql context:test ">

        <createTable tableName="testtab">

            <column autoIncrement="true" name="id" type="INT(10)">

                <constraints primaryKey="true"/>

            </column>

            <column name="firstname" type="VARCHAR(50)"/>

            <column name="lastname" type="VARCHAR(50)">

                <constraints nullable="false"/>

            </column>

            <column name="state" type="VARCHAR(2)"/>

        </createTable>

    </changeSet>

</databaseChangeLog>

每一个developer能够通过自己本机的liquibase把数据库的changset同步到dev环境

首先检查changelog是否有错误

[root@skatedb55 liquibase30]# sh liquibase --contexts=dev --defaultSchemaName=test5 --logLevel=debug --changeLogFile=/tmp/db.Changelog-master.xml --driver=com.mysql.jdbc.Driver --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test2?useUnicode=true&characterEncoding=UTF-8"
--username=skate --password=skate validate

Liquibase Home: /mysql/software/liquibase30

DEBUG 8/19/14 2:45 PM:liquibase: Connected to skate@127.0.0.1@jdbc:mysql://localhost/test2?useUnicode=true&characterEncoding=UTF-8

DEBUG 8/19/14 2:45 PM:liquibase: Setting auto commit to false from true

INFO 8/19/14 2:46 PM:liquibase: Reading from test5.DATABASECHANGELOG

DEBUG 8/19/14 2:46 PM:liquibase: Executing QUERY database command: SELECT FILENAME,AUTHOR,ID,MD5SUM,DATEEXECUTED,ORDEREXECUTED,TAG,EXECTYPE,DESCRIPTION,COMMENTS FROM test5.DATABASECHANGELOG ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC

DEBUG 8/19/14 2:46 PM:liquibase: /tmp/db.Changelog-master.xml: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for inputStream as 00ba919fb68564b7f5f8dab227e4f6a8

DEBUG 8/19/14 2:46 PM:liquibase: /tmp/db.Changelog-master.xml: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for 7:00ba919fb68564b7f5f8dab227e4f6a8: as 283384b19a5c2734d153462833903290

No validation errors found

Liquibase 'validate' Successful

[root@skatedb55 liquibase30]#

为本次更新创建tag(方便以后按须要回滚)

[root@skatedb55 liquibase30]# sh liquibase --contexts=dev --defaultSchemaName=test5 --logLevel=debug --changeLogFile=/tmp/db.Changelog-master.xml --driver=com.mysql.jdbc.Driver --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test2?useUnicode=true&characterEncoding=UTF-8"
--username=skate --password=skate tag Release-2014-05_000_CreateTable

Liquibase Home: /mysql/software/liquibase30

DEBUG 8/19/14 2:54 PM:liquibase: Connected to

useUnicode=true&characterEncoding=UTF-8">
skate@127.0.0.1@jdbc:mysql://localhost/test2?

useUnicode=true&characterEncoding=UTF-8

DEBUG 8/19/14 2:54 PM:liquibase: Setting auto commit to false from true

DEBUG 8/19/14 2:54 PM:liquibase: Executing QUERY database command: select count(*) from test5.DATABASECHANGELOGLOCK

DEBUG 8/19/14 2:54 PM:liquibase: Executing QUERY database command: SELECT LOCKED FROM test5.DATABASECHANGELOGLOCK WHERE ID=1

DEBUG 8/19/14 2:54 PM:liquibase: Lock Database

DEBUG 8/19/14 2:54 PM:liquibase: Executing UPDATE database command: UPDATE test5.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = 'skatedb55 (fe80:0:0:0:218:51ff:fe85:562a%3)', LOCKGRANTED = '2014-08-19 14:54:02.036' WHERE ID = 1 AND LOCKED = 0

INFO 8/19/14 2:54 PM:liquibase: Successfully acquired change log lock

DEBUG 8/19/14 2:54 PM:liquibase: Executing QUERY database command: SELECT MD5SUM FROM test5.DATABASECHANGELOG WHERE MD5SUM IS NOT NULL

DEBUG 8/19/14 2:54 PM:liquibase: Executing QUERY database command: SELECT COUNT(*) FROM test5.DATABASECHANGELOG

DEBUG 8/19/14 2:54 PM:liquibase: Executing EXECUTE database command: UPDATE test5.DATABASECHANGELOG SET TAG = 'Release-2014-05_000_CreateTable' WHERE DATEEXECUTED = (SELECT MAX(DATEEXECUTED) FROM (SELECT DATEEXECUTED FROM test5.DATABASECHANGELOG) AS X)

INFO 8/19/14 2:54 PM:liquibase: Reading from test5.DATABASECHANGELOG

DEBUG 8/19/14 2:54 PM:liquibase: Executing QUERY database command: SELECT FILENAME,AUTHOR,ID,MD5SUM,DATEEXECUTED,ORDEREXECUTED,TAG,EXECTYPE,DESCRIPTION,COMMENTS FROM test5.DATABASECHANGELOG ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC

DEBUG 8/19/14 2:54 PM:liquibase: Release Database Lock

DEBUG 8/19/14 2:54 PM:liquibase: Executing UPDATE database command: UPDATE test5.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1

INFO 8/19/14 2:54 PM:liquibase: Successfully released change log lock

Successfully tagged

useUnicode=true&characterEncoding=UTF-8">
skate@127.0.0.1@jdbc:mysql://localhost/test2?

useUnicode=true&characterEncoding=UTF-8

Liquibase 'tag' Successful

You have new mail in /var/spool/mail/root

[root@skatedb55 liquibase30]#

运行数据库变更到dev数据库

[root@skatedb55 liquibase30]# sh liquibase --contexts=test --defaultSchemaName=test5 --logLevel=debug --changeLogFile=/tmp/db.Changelog-master.xml --driver=com.mysql.jdbc.Driver --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test2?useUnicode=true&characterEncoding=UTF-8"
--username=skate --password=skate update

Liquibase Home: /mysql/software/liquibase30

DEBUG 8/19/14 2:39 PM:liquibase: Connected to skate@127.0.0.1@jdbc:mysql://localhost/test2?useUnicode=true&characterEncoding=UTF-8

DEBUG 8/19/14 2:39 PM:liquibase: Setting auto commit to false from true

DEBUG 8/19/14 2:39 PM:liquibase: Executing QUERY database command: select count(*) from test5.DATABASECHANGELOGLOCK

DEBUG 8/19/14 2:39 PM:liquibase: Executing QUERY database command: SELECT LOCKED FROM test5.DATABASECHANGELOGLOCK WHERE ID=1

DEBUG 8/19/14 2:39 PM:liquibase: Lock Database

DEBUG 8/19/14 2:39 PM:liquibase: Executing UPDATE database command: UPDATE test5.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = 'skatedb55 (fe80:0:0:0:218:51ff:fe85:562a%3)', LOCKGRANTED = '2014-08-19 14:39:26.745' WHERE ID = 1 AND LOCKED = 0

INFO 8/19/14 2:39 PM:liquibase: Successfully acquired change log lock

DEBUG 8/19/14 2:39 PM:liquibase: Executing QUERY database command: SELECT MD5SUM FROM test5.DATABASECHANGELOG WHERE MD5SUM IS NOT NULL

INFO 8/19/14 2:39 PM:liquibase: Reading from test5.DATABASECHANGELOG

DEBUG 8/19/14 2:39 PM:liquibase: Executing QUERY database command: SELECT FILENAME,AUTHOR,ID,MD5SUM,DATEEXECUTED,ORDEREXECUTED,TAG,EXECTYPE,DESCRIPTION,COMMENTS FROM test5.DATABASECHANGELOG ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC

INFO 8/19/14 2:39 PM:liquibase: Reading from test5.DATABASECHANGELOG

DEBUG 8/19/14 2:39 PM:liquibase: Executing QUERY database command: SELECT FILENAME,AUTHOR,ID,MD5SUM,DATEEXECUTED,ORDEREXECUTED,TAG,EXECTYPE,DESCRIPTION,COMMENTS FROM test5.DATABASECHANGELOG ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC

DEBUG 8/19/14 2:39 PM:liquibase: /tmp/db.Changelog-master.xml: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for inputStream as 00ba919fb68564b7f5f8dab227e4f6a8

DEBUG 8/19/14 2:39 PM:liquibase: /tmp/db.Changelog-master.xml: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for 7:00ba919fb68564b7f5f8dab227e4f6a8: as 283384b19a5c2734d153462833903290

DEBUG 8/19/14 2:39 PM:liquibase: Release Database Lock

DEBUG 8/19/14 2:39 PM:liquibase: Executing UPDATE database command: UPDATE test5.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1

INFO 8/19/14 2:39 PM:liquibase: Successfully released change log lock

Liquibase Update Successful

You have new mail in /var/spool/mail/root

2.Liquibase的一些高级使用方法

按指定tag rollback

[root@skatedb55 liquibase30]# sh liquibase --contexts=dev --defaultSchemaName=test5 --logLevel=debug --changeLogFile=/tmp/db.Changelog-master.xml --driver=com.mysql.jdbc.Driver --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test2?

useUnicode=true&characterEncoding=UTF-8"
--username=skate --password=skate rollback Release-2014-05_000_CreateTable

Liquibase Home: /mysql/software/liquibase30

DEBUG 8/19/14 3:06 PM:liquibase: Connected to skate@127.0.0.1@jdbc:mysql://localhost/test2?useUnicode=true&characterEncoding=UTF-8

DEBUG 8/19/14 3:06 PM:liquibase: Setting auto commit to false from true

DEBUG 8/19/14 3:06 PM:liquibase: Executing QUERY database command: select count(*) from test5.DATABASECHANGELOGLOCK

DEBUG 8/19/14 3:06 PM:liquibase: Executing QUERY database command: SELECT LOCKED FROM test5.DATABASECHANGELOGLOCK WHERE ID=1

DEBUG 8/19/14 3:06 PM:liquibase: Lock Database

DEBUG 8/19/14 3:06 PM:liquibase: Executing UPDATE database command: UPDATE test5.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = 'skatedb55 (fe80:0:0:0:218:51ff:fe85:562a%3)', LOCKGRANTED = '2014-08-19 15:06:55.866' WHERE ID = 1 AND LOCKED = 0

INFO 8/19/14 3:06 PM:liquibase: Successfully acquired change log lock

DEBUG 8/19/14 3:07 PM:liquibase: Executing QUERY database command: SELECT MD5SUM FROM test5.DATABASECHANGELOG WHERE MD5SUM IS NOT NULL

INFO 8/19/14 3:07 PM:liquibase: Reading from test5.DATABASECHANGELOG

DEBUG 8/19/14 3:07 PM:liquibase: Executing QUERY database command: SELECT FILENAME,AUTHOR,ID,MD5SUM,DATEEXECUTED,ORDEREXECUTED,TAG,EXECTYPE,DESCRIPTION,COMMENTS FROM test5.DATABASECHANGELOG ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC

DEBUG 8/19/14 3:07 PM:liquibase: /tmp/db.Changelog-master.xml: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for inputStream as 00ba919fb68564b7f5f8dab227e4f6a8

DEBUG 8/19/14 3:07 PM:liquibase: /tmp/db.Changelog-master.xml: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for 7:00ba919fb68564b7f5f8dab227e4f6a8: as 283384b19a5c2734d153462833903290

DEBUG 8/19/14 3:07 PM:liquibase: Release Database Lock

DEBUG 8/19/14 3:07 PM:liquibase: Executing UPDATE database command: UPDATE test5.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1

INFO 8/19/14 3:07 PM:liquibase: Successfully released change log lock

Liquibase Rollback Successful

You have new mail in /var/spool/mail/root

按给定时间rollback

[root@skatedb55 liquibase30]# sh liquibase --contexts=dev --defaultSchemaName=test5 --logLevel=debug --changeLogFile=/tmp/db.Changelog-master.xml --driver=com.mysql.jdbc.Driver --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test2?useUnicode=true&characterEncoding=UTF-8"
--username=skate --password=skate rollbackToDate 2014-08-19 14:01:28

Liquibase Home: /mysql/software/liquibase30

DEBUG 8/19/14 3:14 PM:liquibase: Connected to skate@127.0.0.1@jdbc:mysql://localhost/test2?

useUnicode=true&characterEncoding=UTF-8

DEBUG 8/19/14 3:14 PM:liquibase: Setting auto commit to false from true

DEBUG 8/19/14 3:14 PM:liquibase: Executing QUERY database command: select count(*) from test5.DATABASECHANGELOGLOCK

DEBUG 8/19/14 3:14 PM:liquibase: Executing QUERY database command: SELECT LOCKED FROM test5.DATABASECHANGELOGLOCK WHERE ID=1

DEBUG 8/19/14 3:14 PM:liquibase: Lock Database

DEBUG 8/19/14 3:14 PM:liquibase: Executing UPDATE database command: UPDATE test5.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = 'skatedb55 (fe80:0:0:0:218:51ff:fe85:562a%3)', LOCKGRANTED = '2014-08-19 15:14:46.132' WHERE ID = 1 AND LOCKED = 0

INFO 8/19/14 3:14 PM:liquibase: Successfully acquired change log lock

DEBUG 8/19/14 3:14 PM:liquibase: Executing QUERY database command: SELECT MD5SUM FROM test5.DATABASECHANGELOG WHERE MD5SUM IS NOT NULL

INFO 8/19/14 3:14 PM:liquibase: Reading from test5.DATABASECHANGELOG

DEBUG 8/19/14 3:14 PM:liquibase: Executing QUERY database command: SELECT FILENAME,AUTHOR,ID,MD5SUM,DATEEXECUTED,ORDEREXECUTED,TAG,EXECTYPE,DESCRIPTION,COMMENTS FROM test5.DATABASECHANGELOG ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC

DEBUG 8/19/14 3:14 PM:liquibase: /tmp/db.Changelog-master.xml: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for inputStream as 00ba919fb68564b7f5f8dab227e4f6a8

DEBUG 8/19/14 3:14 PM:liquibase: /tmp/db.Changelog-master.xml: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for 7:00ba919fb68564b7f5f8dab227e4f6a8: as 283384b19a5c2734d153462833903290

INFO 8/19/14 3:14 PM:liquibase: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Rolling Back Changeset:/tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate

DEBUG 8/19/14 3:14 PM:liquibase: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Rolling Back ChangeSet: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate

DEBUG 8/19/14 3:14 PM:liquibase: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Executing EXECUTE database command: drop table table3

DEBUG 8/19/14 3:14 PM:liquibase: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: ChangeSet /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate has been successfully rolled
back.

DEBUG 8/19/14 3:14 PM:liquibase: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Executing EXECUTE database command: DELETE FROM test5.DATABASECHANGELOG  WHERE ID='Release-2014-05_000_CreateTable.sql' AND AUTHOR='skate'
AND FILENAME='/tmp/database/Release-2014-05/000_CreateTable.sql'

DEBUG 8/19/14 3:14 PM:liquibase: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for inputStream as 00ba919fb68564b7f5f8dab227e4f6a8

DEBUG 8/19/14 3:14 PM:liquibase: /tmp/database/Release-2014-05/000_CreateTable.sql::Release-2014-05_000_CreateTable.sql::skate: Computed checksum for 7:00ba919fb68564b7f5f8dab227e4f6a8: as 283384b19a5c2734d153462833903290

DEBUG 8/19/14 3:14 PM:liquibase: Release Database Lock

DEBUG 8/19/14 3:14 PM:liquibase: Executing UPDATE database command: UPDATE test5.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1

INFO 8/19/14 3:14 PM:liquibase: Successfully released change log lock

Liquibase Rollback Successful

You have new mail in /var/spool/mail/root

[root@skatedb55 liquibase30]#

生成当前数据库状态的文档

[root@skatedb55 liquibase30]# sh liquibase --driver=com.mysql.jdbc.Driver --changeLogFile=/tmp/mysql_liquibase_changelog.xml --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test5?useUnicode=true&characterEncoding=UTF-8"
--username=skate --password=skate dbDoc /tmp/dbdoc/

Liquibase Home: /mysql/software/liquibase30

Liquibase 'dbDoc' Successful

You have new mail in /var/spool/mail/root

产生数据库的changelog

sh liquibase --driver=com.mysql.jdbc.Driver --changeLogFile=/tmp/mysql_liquibase_changelog.xml --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test5?

useUnicode=true&characterEncoding=UTF-8" --username=skate --password=skate
generateChangeLog

对照两个数据库

[root@skatedb55 liquibase30]#  sh liquibase  --logLevel=debug  --driver=com.mysql.jdbc.Driver --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://10.10.0.117/test1?useUnicode=true&characterEncoding=UTF-8" --username=test
--password=test@df  diff --referenceUrl="jdbc:mysql://10.20.0.55/test5?useUnicode=true&characterEncoding=UTF-8" --referenceUsername=skate --referencePassword=skate

Liquibase Home: /mysql/software/liquibase30

DEBUG 8/21/14 9:24 AM:liquibase: Connected to test@10.20.0.55@jdbc:mysql://10.10.0.117/test1?useUnicode=true&characterEncoding=UTF-8

DEBUG 8/21/14 9:24 AM:liquibase: Setting auto commit to false from true

DEBUG 8/21/14 9:24 AM:liquibase: Connected to skate@10.20.0.55@jdbc:mysql://10.20.0.55/test5?useUnicode=true&characterEncoding=UTF-8

DEBUG 8/21/14 9:24 AM:liquibase: Setting auto commit to false from true

Diff Results:

Reference Database: skate@10.20.0.55 @ jdbc:mysql://10.20.0.55/test5?useUnicode=true&characterEncoding=UTF-8 (Default Schema: test5)

Comparison Database: test@10.20.0.55 @ jdbc:mysql://10.10.0.117/test1?useUnicode=true&characterEncoding=UTF-8 (Default Schema: test1)

Product Name: EQUAL

Product Version: EQUAL

Missing Catalog(s):

     test5

Unexpected Catalog(s):

     test1

Changed Catalog(s): NONE

Missing Column(s):

     t2.a

     t2.b

Unexpected Column(s): NONE

Changed Column(s): NONE

Missing Foreign Key(s): NONE

Unexpected Foreign Key(s): NONE

Changed Foreign Key(s): NONE

Missing Index(s): NONE

Unexpected Index(s): NONE

Changed Index(s): NONE

Missing Primary Key(s): NONE

Unexpected Primary Key(s): NONE

Changed Primary Key(s): NONE

Missing Schema(s): NONE

Unexpected Schema(s): NONE

Changed Schema(s): NONE

Missing Sequence(s): NONE

Unexpected Sequence(s): NONE

Changed Sequence(s): NONE

Missing Table(s):

     t2

Unexpected Table(s): NONE

Changed Table(s): NONE

Missing Unique Constraint(s): NONE

Unexpected Unique Constraint(s): NONE

Changed Unique Constraint(s): NONE

Missing View(s): NONE

Unexpected View(s): NONE

Changed View(s): NONE

Liquibase 'diff' Successful

You have new mail in /var/spool/mail/root

[root@skatedb55 liquibase30]#

列出当前数据库的lock

[root@skatedb55 liquibase30]# sh liquibase --driver=com.mysql.jdbc.Driver  --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test5?

useUnicode=true&characterEncoding=UTF-8" --username=skate --password=skate listLocks

Liquibase Home: /mysql/software/liquibase30

Database change log locks for

useUnicode=true&characterEncoding=UTF-8">
skate@127.0.0.1@jdbc:mysql://localhost/test5?useUnicode=true&characterEncoding=UTF-8


 - No locks

Liquibase 'listLocks' Successful

You have new mail in /var/spool/mail/root

[root@skatedb55 liquibase30]#

Release当前数据库的全部的lock

[root@skatedb55 liquibase30]# sh liquibase --driver=com.mysql.jdbc.Driver  --classpath=/usr/share/java/mysql-connector-java-5.1.17.jar --url="jdbc:mysql://localhost/test5?

useUnicode=true&characterEncoding=UTF-8" --username=skate --password=skate releaseLocks

Liquibase Home: /mysql/software/liquibase30

Successfully released all database change log locks for skate@127.0.0.1@jdbc:mysql://localhost/test5?

useUnicode=true&characterEncoding=UTF-8

Liquibase 'releaseLocks' Successful

[root@skatedb55 liquibase30]#

--------end---------

Database(Mysql)发版控制二的更多相关文章

  1. MySQL简版(二)

    第一章 表的约束 1.1 概念 对表中的数据进行限定,保证数据的正确性.有效性和完整性. 1.2 分类 主键约束:primary key. 非空约束:not null. 唯一约束:unique. 外键 ...

  2. Windows 8.1下 MySQL绿色版安装配置与使用

    原文:Windows 8.1下 MySQL绿色版安装配置与使用 Mysql-5.6.17-winx64操作步骤: 一.安装MySQL数据库 1.下载. 下载地址:http://downloads.my ...

  3. Windows下MySQL绿色版安装配置与使用

    Mysql-5.7.11-winx64操作步骤: 一.安装MySQL数据库 1.下载. 下载地址: http://downloads.mysql.com/archives/get/file/mysql ...

  4. 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码

    MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如server字符编码还停留在latin12.table的语系设定问题(包含character与collation)3.客 ...

  5. MySql绿色版配置及使用详解

    原文:MySql绿色版配置及使用详解 最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySq ...

  6. mysql绿色版配置

    MySQL 绿色版安装配置教程 一.下载,这里使用绿色免安装版 1.网上搜索mysql绿色免安装版下载即可.提供官网地址 http://dev.mysql.com/downloads/mysql--- ...

  7. c++ primer plus 第6版 部分二 5- 8章

    ---恢复内容开始--- c++ primer plus 第6版 部分二    5-  章 第五章 计算机除了存储外 还可以对数据进行分析.合并.重组.抽取.修改.推断.合成.以及其他操作 1.for ...

  8. mysql绿色版下载及应用

    一.mysql绿色版下载 第一歩:打开下载网址:https://www.oracle.com 点击Menu-->Database and Technologies-->Databases- ...

  9. 阿里云移动研发平台 EMAS 助力银行业打造测试中台,提升发版效能

    随着移动互联网的发展,手机银行凭借低成本.操作简单.不受时间空间约束等优势,正逐步替代传统的网银交易方式.越来越多的银行开始了“业务移动化”转型之路,“手机APP”已经成为企业价值传递和关系维护的关键 ...

随机推荐

  1. text-indent: -999px;是什么意思

    就是把该元素内的文字移到屏幕外面去,让我们肉眼看不见,有时候是因为如某栏目名称的文字或者logo的文字已经用背景图片代替了,我们不需要眼睛看见那些文字,但是希望搜索引擎可以搜到,就可以用这个把文字“隐 ...

  2. Flink资料(2)-- 数据流容错机制

    数据流容错机制 该文档翻译自Data Streaming Fault Tolerance,文档描述flink在流式数据流图上的容错机制. ------------------------------- ...

  3. 退货行RMA编号改为必输选项

    应用 Oracle Inventory 层 Level Function 函数名 Funcgtion Name RCV_RCVTXERE 表单名 Form Name RCVTXERE 说明 Descr ...

  4. PC/SC

    简介 PC/SC规范由微软公司与世界其它著名的智能卡厂商组成的PC/SC工作组提出的.PC/SC规范是一个基于WINDOWS平台的一个标准用户接口(API),提供了一个从个人电脑(Personal C ...

  5. (9)Xamarin测试账号申请与续用

    原文 Xamarin测试账号申请与续用 在Xamarin网站上可以申请30天试用的测试账号.试用期内,Xamarin会提供完整的功能试用. 30天试用时间到期后,在Visual Studio里面你加载 ...

  6. CC++初学者编程教程(2) Microsoft Visual C++ 6.0开发环境搭建

    上一篇演示的是如何安装VS2010,本文演示的是如何安装Microsoft Visual C++ 6.0 简称VC6. 有同学经常VC6都是很古董的版本了,为啥他还存在,不得不说VC6是微软一个很经典 ...

  7. SICP 习题 (1.10)解题总结

    SICP 习题 1.10 讲的是一个叫“Akermann函数”的东西,去百度查可以查到对应的中文翻译,叫“阿克曼函数”. 就像前面的解题总结中提到的,我是一个数学恐惧者,看着稍微复杂一点的什么函数我就 ...

  8. ceph 块设备

    数据的存储设备? 数据的存储有3种形式,1种是直接以二进制数据的形式存储在裸设备(包括块设备)上,另外一种是以文件的形式经过文件系统管理进行存储.第三种就是以对象的形式进行对象存储.本篇讨论围绕着块设 ...

  9. jvm的内存管理【转】

    [转]JVM内存管理 这些日子一直在研究jvm内存管理的东西,网上的知识很多,总结一下,能沉淀下来的就是自己的! 首先,刚学java的时候就知道java类文件是以 .java为后缀的文件,经过java ...

  10. java中关于如何运行jar格式程序的说明

    通常情况下,我们用打包工具如Eclipse的export工具制作的jar包是无法通过鼠标双击来运行的. 此时我们需要启动DOS窗体,在DOS窗体中输入java命令运行程序(前提是你的环境变量class ...