MySQL 对比数据库的表结构

有时候,需要对比一下测试环境和生产环境中,数据库的表结构是否有所差异。有两个常用的工具。

AmpNmp.DatabaseCompare

GUI 界面,支持多种数据库(MySQL、SQL Server、SQLite)简单高效,推荐。

官方下载地址及文档
百度网盘下载地址

界面

mysqldiff

官方文档
官方下载地址

下载安装

mysqldiff 是命令行工具,其优点是可以直接根据差异生成 SQL 语句。

一般直接在本地开发环境安装,如果是 Windows 环境,需要提前安装 Visual C++ Redistributable Packages for Visual Studio 2013

语法

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

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的修改。
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid

MySQL 对比数据库的表结构 - HelloWorld