1

我正在尝试使用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 输出中的存在会导致重复的键错误,使其在没有额外的解析和编辑的情况下毫无用处。

4

0 回答 0