mysql-数据库比较
说明
项目中有两个分支,两个分支开发久了,想要对这两个分支合并,代码已经合并了,现在要对数据库进行合并,记录一下如何用DatabaseCompare工具对两个数据库进行对比,mysqldiff生成差异数据,最终进行合并的记录。
工具:
数据库比对软件(windows):DatabaseCompare-v1.1-x86-setup.exe
百度云盘:https://pan.baidu.com/s/1IVD0WmMySrUiGZtBDkkUrg
过程:
windows安装DatabaseCompare
windows安装DatabaseCompare
对比两个数据库
链接两个要比对的数据库,执行比对程序,结果集为两个数据库中不同的表,包括字段、主键、外键的不同

记录有差异的表
根据对比工具记录两个库有差异的表名字
安装mysqldiff
服务器安装mysqldiff,mysqldiff该工具是官方mysql-utilities工具集的一个脚本(注:数据库在服务器,在本地机安装客户端的自行百度哈)
sudo apt-get install mysql-utilities
mysqldiff --version(查看是否安装成功
生成比较sql
格式: mysqldiff --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1.object1:db2.object1 db3:db4
zhangwei@iZm5e2xvjjwqe6031jys5gZ:~$ sudo mysqldiff --server1=root:*****@localhost --server2=root:******@localhost --changes-for=server2 --difftype=sql dakang_his.t_user:ihmip_his.t_user;
# WARNING: Using a password on the command line interface can be insecure.
# server1 on localhost: ... connected.
# server2 on localhost: ... connected.
# Comparing dakang_his.t_user to ihmip_his.t_user [FAIL]
# Transformation for --changes-for=server2:
#
ALTER TABLE `ihmip_his`.`t_user`
DROP PRIMARY KEY,
DROP INDEX fk_t_user_t_role1_idx,
DROP COLUMN doctor_code,
DROP COLUMN login_status,
DROP COLUMN role_code,
DROP COLUMN phone,
DROP COLUMN supper,
DROP COLUMN login_time,
ADD PRIMARY KEY(`user_id`),
ADD INDEX fk_t_user_t_role1_idx (role_id),
ADD COLUMN cust_company_id int(11) NULL COMMENT ' ' AFTER status,
CHANGE COLUMN status status tinyint(4) NULL DEFAULT '1' COMMENT ' ',
CHANGE COLUMN user_id user_id bigint(20) NOT NULL COMMENT ' ',
CHANGE COLUMN hospital_dept_id hospital_dept_id bigint(20) NULL DEFAULT '0' COMMENT ' ',
CHANGE COLUMN hospital_id hospital_id bigint(20) NULL COMMENT ' ',
CHANGE COLUMN company_id company_id bigint(20) NULL COMMENT ' ',
CHANGE COLUMN role_id role_id bigint(20) NOT NULL COMMENT ' ',
CHANGE COLUMN login_pwd login_pwd varchar(45) NULL COMMENT ' ',
CHANGE COLUMN work_num work_num varchar(45) NULL COMMENT ' ',
CHANGE COLUMN user_name user_name varchar(200) NULL COMMENT ' ',
CHANGE COLUMN login_name login_name varchar(45) NULL COMMENT ' ',
AUTO_INCREMENT=646, COMMENT='用户表';
Compare failed. One or more differences found.
记录差异sql
根据之前记录下的有差异的表一条条生成sql并记录到diff.sql的文件中
执行diff.sql
执行diff.sql ,合并两个数据库
结尾
Forget the memories, continue to be life, miss, just pass by. ~~~