天天看點

兩個mysql 資料庫表結構_MYSQL對比兩個資料庫表結構

有時候,需要對比一下測試環境和生産環境中,資料庫的表結構是否有所差異。有兩個常用的工具。

AmpNmp.DatabaseCompare

GUI 界面,支援多種資料庫(MySQL、SQL Server、SQLite)簡單高效,推薦。

官方下載下傳位址及文檔

百度網盤下載下傳位址

mysqldiff

官方文檔

官方下載下傳位址

下載下傳安裝

mysqldiff 是指令行工具,其優點是可以直接根據差異生成 SQL 語句。

一般直接在本地開發環境安裝,如果是 Windows 環境,需要提前安裝 Visual C++ Redistributable Packages for Visual Studio 2013 。

文法

mysqldiff --server1=user:[email protected]:port:socket --server2=user:[email protected]:port:socket db1.object1:db2.object1 db3:db4

1

mysqldiff 可以對比兩個資料庫,或隻對比表:

db1:db2:如果隻是指定資料庫,那麼就将兩個資料庫中互相缺少的對象顯示出來,而對象裡面的差異不進行對比;包括表、存儲過程、函數、觸發器等。

db1.object1:db2.object1:如果指定了具體表對象,那麼就會詳細對比兩個表的差異,包括表名、字段名、備注、索引、大小寫等都有的表相關的對象。

參數:

--server1:配置server1的連接配接

--character-set:配置連接配接時用的字元集,如果不顯示配置預設使用“character_set_client”

--width:配置顯示的寬度

--skip-table-options:這個選項的意思是保持表的選項不變,即對比的差異裡面不包括表名、AUTO_INCREMENT,ENGINE, CHARSET等差異。

-d DIFFTYPE,--difftype:差異的資訊顯示的方式,有[unified|context|differ|sql](default: unified),如果使用sql那麼就直接生成差異的SQL這樣非常友善。

--changes-for=:例如–changes-for=server2,那麼對比以sever1為主,生成的差異的修改也是針對server2的對象的修改。

--show-reverse:這個字面意思是顯示相反的意思,其實是生成的差異修改裡面同時會包含server2和server1的修改。