mysqldbcompare无法忽略数据库名称差异

时间:2018-01-11 17:27:20

标签: mysql mysqldbcompare

我正在尝试使用mysqldbcompare(版本1.6.5)自动生成SQL命令,以在同一服务器上同步开发和生产数据库的模式。我使用以下命令:

mysqldbcompare --server1=client:3306 \
               --server2=client:3306 \
               dev:test\
               --skip-row-count \
               --skip-data-check \
               --skip-checksum-table \
               --skip-table-options \
               --run-all-tests \
               --changes-for=server1 \
               --difftype=sql

该文档声称此工具忽略了数据库名称差异。但是,如果两个表之间存在另一个差异,则在SQL输出中报告相同的外键约束(数据库名称除外)。例如,如果我克隆数据库并比较所有检查将通过。但是,如果我向克隆数据库中的表添加一列,我将会看到:

ALTER TABLE `prod`.`Table`
  DROP FOREIGN KEY Table_ibfk_1,
ADD CONSTRAINT Table_ibfk_1 FOREIGN KEY(old_column) REFERENCES `dev`.`Table2`(old_column),
  ADD COLUMN new_column int(4) NULL AFTER old_column;

这是一个错误,还是我误解了mysqldbcompare文档?似乎应该抑制这些多余的外键命令。它们在SQL输出中的存在导致重复的键错误,使得它无法进行额外的解析和编辑。

0 个答案:

没有答案