Database(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://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(方便以后按须要回滚) useUnicode=true&characterEncoding=UTF-8"> useUnicode=true&characterEncoding=UTF-8 useUnicode=true&characterEncoding=UTF-8"> useUnicode=true&characterEncoding=UTF-8
[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?
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?
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 useUnicode=true&characterEncoding=UTF-8">
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简版(二)
第一章 表的约束 1.1 概念 对表中的数据进行限定,保证数据的正确性.有效性和完整性. 1.2 分类 主键约束:primary key. 非空约束:not null. 唯一约束:unique. 外键 ...
- Windows 8.1下 MySQL绿色版安装配置与使用
原文:Windows 8.1下 MySQL绿色版安装配置与使用 Mysql-5.6.17-winx64操作步骤: 一.安装MySQL数据库 1.下载. 下载地址:http://downloads.my ...
- Windows下MySQL绿色版安装配置与使用
Mysql-5.7.11-winx64操作步骤: 一.安装MySQL数据库 1.下载. 下载地址: http://downloads.mysql.com/archives/get/file/mysql ...
- 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码
MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如server字符编码还停留在latin12.table的语系设定问题(包含character与collation)3.客 ...
- MySql绿色版配置及使用详解
原文:MySql绿色版配置及使用详解 最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySq ...
- mysql绿色版配置
MySQL 绿色版安装配置教程 一.下载,这里使用绿色免安装版 1.网上搜索mysql绿色免安装版下载即可.提供官网地址 http://dev.mysql.com/downloads/mysql--- ...
- c++ primer plus 第6版 部分二 5- 8章
---恢复内容开始--- c++ primer plus 第6版 部分二 5- 章 第五章 计算机除了存储外 还可以对数据进行分析.合并.重组.抽取.修改.推断.合成.以及其他操作 1.for ...
- mysql绿色版下载及应用
一.mysql绿色版下载 第一歩:打开下载网址:https://www.oracle.com 点击Menu-->Database and Technologies-->Databases- ...
- 阿里云移动研发平台 EMAS 助力银行业打造测试中台,提升发版效能
随着移动互联网的发展,手机银行凭借低成本.操作简单.不受时间空间约束等优势,正逐步替代传统的网银交易方式.越来越多的银行开始了“业务移动化”转型之路,“手机APP”已经成为企业价值传递和关系维护的关键 ...
随机推荐
- JS中格式化数据保留两位小数
问题:在JS中格式化数据保留两位小数的函数的多种方法 最好方法: 保留两位好像是这样吧 var a = 9.39393; alert(a.toFixed(2)); 说明: ...
- php 按列值合并数据
/* * PHP按值合并数组 * */ function my_array_merge(&$array1, &$array2) { $result = Array(); foreach ...
- spoj ONP - Transform the Expression 中缀转后缀
题目链接 将中缀表达式转化为后缀表达式. 数字的话直接放到答案的字符串里. 如果是左括号就进栈, 右括号就让栈里的符号都出来直到第一个左括号. 否则的话比较当前符号的优先级和栈顶符号的优先级. #in ...
- linux下flashplayer更新_最新版传送
http://get.adobe.com/cn/flashplayer/ 官网地址,全部最新的flash都在这了,左边选择你要下载的类型,右边点击下载就行了. 最简单的方法就是 下载rpm包,命令rp ...
- C++设计模式之工厂模式
//产品父类声明#pragma once #include "iostream" using namespace std; class Product { public: virt ...
- MMC卡是什么
MMC卡(Multimedia Card) 翻译成中文为“多媒体卡”.是一种快闪存储器卡标准.在1997年由西门子及SanDisk共同开发,技术基于东芝的NAND快闪记忆技术,因此较早期基于Intel ...
- HTML标签CSS属性默认值汇总
HTML标签CSS属性默认值,在你需要还原默认值的时候比较有用. 以前一直在找这份文档,今天偶然在网上看到了.除了inline和block的定义,主要是要注意body|h1~h6|blockquote ...
- opensatck 在启动的时候注入额外的信息
在配置ceph的时候建议使用metadata/cloud-init来注入额外的信息. https://raymii.org/s/tutorials/Automating_Openstack_with_ ...
- SQL高级查询
高级查询: 一.多表链接 1,普通查询 select * from 表名,表名 where 表名.列名 = 表名.列名 2,join链接 select * from 表名 join 表名 on 表名. ...
- golang 之 defer(统计函数执行时间)
package main import ( "fmt" "time" ) func sum(a ...int) int { defer trace(" ...