MySQL 對比數據庫的表結構

有時候,須要對比一下測試環境和生產環境中,數據庫的表結構是否有所差別。有兩個經常使用的工具。html

AmpNmp.DatabaseCompare

GUI 界面,支持多種數據庫(MySQL、SQL Server、SQLite)簡單高效,推薦。mysql

官方下載地址及文檔
百度網盤下載地址sql

界面

mysqldiff

官方文檔
官方下載地址數據庫

下載安裝

mysqldiff 是命令行工具,其優勢是能夠直接根據差別生成 SQL 語句。ruby

通常直接在本地開發環境安裝,若是是 Windows 環境,須要提早安裝 Visual C++ Redistributable Packages for Visual Studio 2013oracle

語法

mysqldiff --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1.object1:db2.object1 db3:db4

mysqldiff 能夠對比兩個數據庫,或只對比表:socket

  • 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的修改。
相關文章
相關標籤/搜索