亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

mysql如何比對兩個數據庫表結構的方法

2020-01-18 20:42:49
字體:
來源:轉載
供稿:網友

在開發及調試的過程中,需要比對新舊代碼的差異,我們可以使用git/svn等版本控制工具進行比對。而不同版本的數據庫表結構也存在差異,我們同樣需要比對差異及獲取更新結構的sql語句。

例如同一套代碼,在開發環境正常,在測試環境出現問題,這時除了檢查服務器設置,還需要比對開發環境與測試環境的數據庫表結構是否存在差異。找到差異后需要更新測試環境數據庫表結構直到開發與測試環境的數據庫表結構一致。

我們可以使用mysqldiff工具來實現比對數據庫表結構及獲取更新結構的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系統,可以直接使用brew安裝即可。

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

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

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

2.mysqldiff使用方法

命令:

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

參數說明:

--server1 指定數據庫1
--server2 指定數據庫2

比對可以針對單個數據庫,僅指定server1選項可以比較同一個庫中的不同表結構。  

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

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

context
顯示上下文格式輸出

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

sql
顯示SQL轉換語句輸出

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

--character-set 指定字符集

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

--changes-for=server1 表示server1要轉為server2的結構,server2為主。

--changes-for=server2 表示server2要轉為server1的結構,server1為主。

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

--version 查看版本

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

3.實例

創建測試數據庫表及數據

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);

執行差異比對,設置server1為主,server2要轉為server1數據庫表結構

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.

執行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)

再次執行mysqldiff進行比對,結構沒有差異,只有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.

設置忽略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.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕精品久久久久| 日韩av免费网站| 亚洲激情国产精品| 中文字幕在线亚洲| 亚洲男人天堂视频| 亚洲天堂免费在线| 国产成人免费91av在线| 欧美激情视频一区二区三区不卡| 国产精品成人一区| 亚洲人成在线观看网站高清| 久久精品视频在线| 亚州欧美日韩中文视频| 中文字幕成人精品久久不卡| 一区二区三区视频在线| www亚洲精品| 欧美在线www| 亚洲精品一区久久久久久| 青草青草久热精品视频在线网站| 色一情一乱一区二区| 欧美野外wwwxxx| 美日韩精品视频免费看| 日韩最新中文字幕电影免费看| 国产精品扒开腿做爽爽爽男男| 亚洲美女喷白浆| 亚洲一区二区国产| 日本91av在线播放| 亚洲欧美激情一区| 国产欧美欧洲在线观看| 在线电影欧美日韩一区二区私密| 亚洲国产97在线精品一区| 亚洲第一区第一页| 欧美性20hd另类| 97国产一区二区精品久久呦| 97色在线观看免费视频| 亚洲精品一区二区三区不| 亚洲女成人图区| 欧美日韩激情网| 欧美日韩精品在线观看| 久久精品一偷一偷国产| 久久久成人av| 欧美成人手机在线| 伊人久久久久久久久久久久久| 日韩av在线免费观看一区| 国产一区香蕉久久| 97香蕉超级碰碰久久免费软件| 精品香蕉在线观看视频一| 久久高清视频免费| 91视频88av| 欧洲亚洲女同hd| 福利视频一区二区| 亚洲奶大毛多的老太婆| 欧美猛交ⅹxxx乱大交视频| 亚洲第一偷拍网| 亚洲图片在区色| 日韩在线视频中文字幕| 精品久久在线播放| 97在线精品视频| 亚洲精品欧美日韩专区| 日本精品视频在线观看| 国产成人精品视频在线观看| 欧美在线视频播放| 日韩欧美视频一区二区三区| 亚洲变态欧美另类捆绑| 97超级碰碰碰久久久| 精品亚洲一区二区三区四区五区| 久久免费视频观看| 久国内精品在线| 伊人激情综合网| 日韩欧美国产中文字幕| 性色av一区二区三区红粉影视| 国产精品一区二区3区| 91精品国产99| 成人国产精品久久久久久亚洲| 欧美一级免费视频| 亚洲一区二区三区xxx视频| 久久免费视频网| 亚洲日韩欧美视频| 国产精品嫩草视频| 国产欧美久久久久久| 一本色道久久88综合亚洲精品ⅰ| 日韩精品视频免费| 播播国产欧美激情| 国产精品美女无圣光视频| 日韩在线观看精品| 国产精品免费电影| 97色在线播放视频| 国内自拍欧美激情| 91免费精品国偷自产在线| 欧美日韩第一视频| 亚洲国产另类久久精品| 亚洲欧美日韩久久久久久| 国产日韩欧美91| 日韩成人在线视频网站| 国产一区二区三区丝袜| 69久久夜色精品国产7777| 日本视频久久久| 欧美成人精品激情在线观看| 亚洲色图综合网| 欧美激情精品久久久久久大尺度| 国产香蕉一区二区三区在线视频| 欧美高清视频一区二区| 日韩成人中文字幕在线观看| 精品久久久久久久中文字幕| 成人有码在线视频| 国内精品久久久久影院优| 久久99精品久久久久久青青91| 日韩免费电影在线观看| 日本精品久久久久久久| 午夜精品久久久久久久白皮肤| 久久视频在线免费观看| 91网站在线免费观看| 日韩免费观看av| 欧美性猛交xxxx| 一本色道久久综合狠狠躁篇怎么玩| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲国产成人精品久久| 亚洲精品色婷婷福利天堂| 国产精品91久久久久久| 国产精品揄拍500视频| 欧美成人激情图片网| 欧美性猛交xxxx乱大交3| 黑人与娇小精品av专区| 成人在线中文字幕| 亚洲一区999| 亚洲视频日韩精品| 久久久久久久久久久国产| xxx一区二区| 日韩女优人人人人射在线视频| 57pao成人永久免费视频| 国产精品高清免费在线观看| 国产免费一区二区三区香蕉精| 91av视频在线观看| 中文字幕亚洲情99在线| 久久久国产影院| 中文字幕日韩高清| 欧美性猛交xxxx免费看| 国产精品久久久久久久久久久久久久| 97香蕉超级碰碰久久免费的优势| 久久99久久久久久久噜噜| 久久躁日日躁aaaaxxxx| 久久亚洲精品中文字幕冲田杏梨| 亚洲精品720p| 欧美日韩视频在线| 日韩一区二区三区xxxx| 超碰日本道色综合久久综合| 成人h猎奇视频网站| 成人免费看吃奶视频网站| 欧美日韩人人澡狠狠躁视频| 中文字幕亚洲欧美在线| 国内自拍欧美激情| 日韩av免费在线播放| 亚洲午夜国产成人av电影男同| 国产精品99久久久久久久久久久久| 色噜噜亚洲精品中文字幕| 久热精品视频在线免费观看| 激情av一区二区| 亚洲在线免费看| 精品欧美激情精品一区| 日韩国产在线播放| 亚洲黄色免费三级| 久久久久久久一区二区三区| 91大神在线播放精品| 亚洲黄色片网站| 综合久久五月天|