好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > mysql如何比對兩個數(shù)據(jù)庫表結(jié)構(gòu)的方法

mysql如何比對兩個數(shù)據(jù)庫表結(jié)構(gòu)的方法

熱門標簽:400電話可以免費申請嗎 騰訊地圖標注提升 真人語音電話機器人 悟空科技電話機器人 怎么在地圖標注位置生成圖片 電銷卡外呼系統(tǒng)供應商 銅陵防封電銷卡 美國反騷擾電話機器人 福建外呼系統(tǒng)定制化

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

例如同一套代碼,在開發(fā)環(huán)境正常,在測試環(huán)境出現(xiàn)問題,這時除了檢查服務器設置,還需要比對開發(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í)行差異比對,設置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.

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • mysql數(shù)據(jù)表的基本操作之表結(jié)構(gòu)操作,字段操作實例分析
  • MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解
  • mysql 從 frm 文件恢復 table 表結(jié)構(gòu)的3種方法【推薦】
  • 詳解 linux mysqldump 導出數(shù)據(jù)庫、數(shù)據(jù)、表結(jié)構(gòu)
  • MySQL利用procedure analyse()函數(shù)優(yōu)化表結(jié)構(gòu)
  • Navicat for MySQL導出表結(jié)構(gòu)腳本的簡單方法
  • Mysql復制表結(jié)構(gòu)、表數(shù)據(jù)的方法
  • MySQL中修改表結(jié)構(gòu)時需要注意的一些地方
  • MySQL修改表結(jié)構(gòu)操作命令總結(jié)
  • MySQL如何快速修改表的表結(jié)構(gòu)

標簽:烏海 云浮 湖北 聊城 臨汾 白銀 湖南 武威

巨人網(wǎng)絡通訊聲明:本文標題《mysql如何比對兩個數(shù)據(jù)庫表結(jié)構(gòu)的方法》,本文關(guān)鍵詞  mysql,如何,比對,兩個,數(shù)據(jù)庫,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql如何比對兩個數(shù)據(jù)庫表結(jié)構(gòu)的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于mysql如何比對兩個數(shù)據(jù)庫表結(jié)構(gòu)的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 日韩亚洲欧美性感视频影片免费看| 欧美特级黄色大片| 91视频免费网站| 国产www亚洲а∨天堂| 凹凸日日摸日日碰夜夜爽孕妇| tom影院永久入口永久进入| 久久精品国语| 三级韩国一区久久二区综合| 女人被男人靠到爽视频30分钟| 91在线无码精品秘?国多多| 91精品国产自产在线观看直播| 欧美老逼| 性生活视频网址| 欧美日韩国产精品伦一区二区| 中文字幕人妻在线一区| jizz女人水多| 这17款app正偷窥你的隐私| 日韩欧美视频一区| 6080私人午夜性爽快影院| 援助配对全集在线观看 | 7m视频在线观看| 黄色一级视频在线观看| 亚洲AV秘?精品老牛影视 | 男人j进入女人下部免费视频网站| 蜜桃视频com.www| 午夜精品久久久久久| 欧美国产亚洲一区二区三区| 久婷婷| 深夜福利gif动态图| 六月丁香婷婷色狠狠久久 | 再深点灬舒服灬太大了o在线观看| 一级欧美一级A一级a爱片奂费| 国产一级特黄a高潮片| 《肉体偿还》在线观看| 婷婷日韩| 欧美黄色片网站| 裙子底下真空h揉搓小雪| 全是肉的高H短篇bl| 丁香花在线观看免费观看图片| 不...不可以太快了| 国产偷窥网|