所以我目前有一个根据SHOW CREATE TABLE
具有以下约束的表:
CONSTRAINT `FK_BA62400997790DEE` FOREIGN KEY (`some_id`) REFERENCES `Other_Table` (`id`),
CONSTRAINT `FK_BA624009C8554709` FOREIGN KEY (`someOther_id`) REFERENCES `Yet_Another_Table` (`id`)
但是,当使用mysqldbcopy
复制数据库时,我收到以下错误:
ALTER TABLE old_database.OriginalTable add CONSTRAINT `FK_BA62400997790DEE`
FOREIGN KEY (`some_id`,`someOther_id`)
REFERENCES `old_database`.`Other_Table`
(`id`,`id`)
ON UPDATE RESTRICT
ON DELETE RESTRICT
. Error: Query failed. 1005 (HY000): Can't create table 'old_database.#sql-602_4b5' (errno: 150)
这里显然有些问题,但不确定它是什么。显然,它试图将键组合起来?
我正在运行1.3.5版本。
答案 0 :(得分:4)
1.3.6版本修复了以下可能相关的错误
BUG#17474810: constraint error copying the employees with mysqldbcopy
尝试升级到更高版本,目前最高版本为1.6 - https://launchpad.net/mysql-utilities
答案 1 :(得分:1)
我正在使用MySQL Utilities mysqldbcopy版本1.6.5,它仍然显示我这样的事情:
ERROR: Unable to execute constraint query
ALTER TABLE node5.books add CONSTRAINT `books_ibfk_1`
FOREIGN KEY (`publisher_id`)
REFERENCES `node5`.`publishers`
(`id`)
ON UPDATE RESTRICT
ON DELETE RESTRICT
. Error: Query failed. 1215 (HY000): Cannot add foreign key constraint
然后我发现设置InnoDB的存储引擎可以解决这个问题。
https://github.com/maghead/maghead/commit/b406abf277b525f665966f8e8ec421a229bb13c7