有时候,须要对比一下测试环境和生产环境中,数据库的表结构是否有所差别。有两个经常使用的工具。html
AmpNmp.DatabaseCompare
GUI 界面,支持多种数据库(MySQL、SQL Server、SQLite)简单高效,推荐。mysql
mysqldiff
下载安装
mysqldiff 是命令行工具,其优势是能够直接根据差别生成 SQL 语句。ruby
通常直接在本地开发环境安装,若是是 Windows 环境,须要提早安装 Visual C++ Redistributable Packages for Visual Studio 2013 。oracle
语法
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的修改。