好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Database(Mysql)发版控制二 - mysql数据库栏目 - 自学

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://HdhCmsTestliquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://HdhCmsTestw3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://HdhCmsTestliquibase.org/xml/ns/dbchangelog http://HdhCmsTestliquibase.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://HdhCmsTestliquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://HdhCmsTestw3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://HdhCmsTestliquibase.org/xml/ns/dbchangelog http://HdhCmsTestliquibase.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, MD5 SUM,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 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 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 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)发版控制二 - mysql数据库栏目 - 自学的详细内容...

  阅读:43次