真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么對比兩個數(shù)據(jù)庫表結(jié)構(gòu)-創(chuàng)新互聯(lián)

這篇文章主要介紹了mysql怎么對比兩個數(shù)據(jù)庫表結(jié)構(gòu),具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)主營思南網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),思南h5重慶小程序開發(fā)公司搭建,思南網(wǎng)站營銷推廣歡迎思南等地區(qū)企業(yè)咨詢

在開發(fā)及調(diào)試的過程中,需要對比新舊代碼的差異,我們可以使用git/svn等版本控制工具進行比對。而不同版本的數(shù)據(jù)庫表結(jié)構(gòu)也存在差異,我們同樣需要對比差異及獲取更新結(jié)構(gòu)的sql語句。

例如同一套代碼,在開發(fā)環(huán)境正常,在測試環(huán)境出現(xiàn)問題,這時除了檢查服務(wù)器設(shè)置,還需要對比開發(fā)環(huán)境與測試環(huán)境的數(shù)據(jù)庫表結(jié)構(gòu)是否存在差異。找到差異后需要更新測試環(huán)境數(shù)據(jù)庫表結(jié)構(gòu)直到開發(fā)與測試環(huán)境的數(shù)據(jù)庫表結(jié)構(gòu)一致。

我們可以使用mysqldiff工具來實現(xiàn)對比數(shù)據(jù)庫表結(jié)構(gòu)及獲取更新結(jié)構(gòu)的sql語句。

1.mysqldiff安裝方法

mysqldiff工具在mysql-utilities軟件包中,而運行mysql-utilities需要安裝依賴mysql-connector-python  

mysql-connector-python 安裝

下載地址:https://dev.mysql.com/downloads/connector/python/ 

mysql-utilities 安裝

下載地址:https://downloads.mysql.com/archives/utilities/

因本人使用的是mac系統(tǒng),可以直接使用brew安裝即可。

brew install caskroom/cask/mysql-connector-python
brew install caskroom/cask/mysql-utilities

安裝以后執(zhí)行查看版本命令,如果能顯示版本表示安裝成功

mysqldiff --version
MySQL Utilities mysqldiff version 1.6.5 
License type: GPLv2

2.mysqldiff使用方法

命令:

mysqldiff --server1=root@host1 --server2=root@host2 --difftype=sql db1.table1:dbx.table3

參數(shù)說明:

--server1 指定數(shù)據(jù)庫1
--server2 指定數(shù)據(jù)庫2

比對可以針對單個數(shù)據(jù)庫,僅指定server1選項可以比較同一個庫中的不同表結(jié)構(gòu)。  

--difftype 差異信息的顯示方式

unified (default)
顯示統(tǒng)一格式輸出

context
顯示上下文格式輸出

differ
顯示不同樣式的格式輸出

sql
顯示SQL轉(zhuǎn)換語句輸出

如果要獲取sql轉(zhuǎn)換語句,使用sql這種顯示方式顯示最適合。

--character-set 指定字符集

--changes-for 用于指定要轉(zhuǎn)換的對象,也就是生成差異的方向,默認是server1

--changes-for=server1 表示server1要轉(zhuǎn)為server2的結(jié)構(gòu),server2為主。

--changes-for=server2 表示server2要轉(zhuǎn)為server1的結(jié)構(gòu),server1為主。

--skip-table-options 忽略AUTO_INCREMENT, ENGINE, CHARSET的差異。

--version 查看版本

更多mysqldiff的參數(shù)使用方法可參考官方文檔:
https://dev.mysql.com/doc/mysql-utilities/1.5/en/mysqldiff.html

3.實例

創(chuàng)建測試數(shù)據(jù)庫表及數(shù)據(jù)

create database testa;
create database testb;

use testa;

CREATE TABLE `tba` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(25) NOT NULL,
 `age` int(10) unsigned NOT NULL,
 `addtime` int(10) unsigned NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8;

insert into `tba`(name,age,addtime) values('fdipzone',18,1514089188);

use testb;

CREATE TABLE `tbb` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(20) NOT NULL,
 `age` int(10) NOT NULL,
 `addtime` int(10) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into `tbb`(name,age,addtime) values('fdipzone',19,1514089188);

執(zhí)行差異比對,設(shè)置server1為主,server2要轉(zhuǎn)為server1數(shù)據(jù)庫表結(jié)構(gòu)

mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --difftype=sql testa.tba:testb.tbb;
# server1 on localhost: ... connected.
# server2 on localhost: ... connected.
# Comparing testa.tba to testb.tbb                 [FAIL]
# Transformation for --changes-for=server2:
#

ALTER TABLE `testb`.`tbb` 
 CHANGE COLUMN addtime addtime int(10) unsigned NOT NULL, 
 CHANGE COLUMN age age int(10) unsigned NOT NULL, 
 CHANGE COLUMN name name varchar(25) NOT NULL, 
RENAME TO testa.tba 
, AUTO_INCREMENT=1002;

# Compare failed. One or more differences found.

執(zhí)行mysqldiff返回的更新sql語句

mysql> ALTER TABLE `testb`.`tbb` 
  ->  CHANGE COLUMN addtime addtime int(10) unsigned NOT NULL, 
  ->  CHANGE COLUMN age age int(10) unsigned NOT NULL, 
  ->  CHANGE COLUMN name name varchar(25) NOT NULL;
Query OK, 0 rows affected (0.03 sec)

再次執(zhí)行mysqldiff進行比對,結(jié)構(gòu)沒有差異,只有AUTO_INCREMENT存在差異

mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --difftype=sql testa.tba:testb.tbb;
# server1 on localhost: ... connected.
# server2 on localhost: ... connected.
# Comparing testa.tba to testb.tbb                 [FAIL]
# Transformation for --changes-for=server2:
#

ALTER TABLE `testb`.`tbb` 
RENAME TO testa.tba 
, AUTO_INCREMENT=1002;

# Compare failed. One or more differences found.

設(shè)置忽略AUTO_INCREMENT再進行差異比對,比對通過

mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --skip-table-options --difftype=sql testa.tba:testb.tbb;
# server1 on localhost: ... connected.
# server2 on localhost: ... connected.
# Comparing testa.tba to testb.tbb                 [PASS]
# Success. All objects are the same.

感謝你能夠認真閱讀完這篇文章,希望小編分享的“mysql怎么對比兩個數(shù)據(jù)庫表結(jié)構(gòu)”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章標(biāo)題:mysql怎么對比兩個數(shù)據(jù)庫表結(jié)構(gòu)-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://weahome.cn/article/phoss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部