mysql-两个分支的数据库进行比较合并

mysql-数据库比较

说明

项目中有两个分支,两个分支开发久了,想要对这两个分支合并,代码已经合并了,现在要对数据库进行合并,记录一下如何用DatabaseCompare工具对两个数据库进行对比,mysqldiff生成差异数据,最终进行合并的记录。


工具:

数据库比对软件(windows):DatabaseCompare-v1.1-x86-setup.exe
百度云盘:https://pan.baidu.com/s/1IVD0WmMySrUiGZtBDkkUrg

过程:

windows安装DatabaseCompare

windows安装DatabaseCompare

对比两个数据库

链接两个要比对的数据库,执行比对程序,结果集为两个数据库中不同的表,包括字段、主键、外键的不同

403899212.png

记录有差异的表

根据对比工具记录两个库有差异的表名字

安装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. ~~~

添加新评论