MySQL错误代码:1452将索引和外键约束添加到现有表时

时间:2015-02-09 19:59:29

标签: mysql sql

我有一个MySQL数据库,其中包含一个现有的(而不是可移动的)城市表,其中包含一个字段省份对表省的新引用。

当我跑步时:

ALTER TABLE cities ADD province_id INTEGER NOT NULL;
ALTER TABLE cities ADD INDEX (province_id),
                   ADD FOREIGN KEY (province_id) REFERENCES provinces (id); 

我在第二个查询上遇到了下一个错误,添加了索引和外键:

ALTER TABLE cities ADD INDEX (province_id),        ADD FOREIGN KEY (province_id) REFERENCES provinces (id)  Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`yanpytest`.`#sql-16d8_325`, CONSTRAINT `#sql-16d8_325_ibfk_3` FOREIGN KEY (`province_id`) REFERENCES `provinces` (`id`))

我不明白为什么,这在我的生产环境中不起作用,在开发中它起作用(两者都是MySQL)。

1 个答案:

答案 0 :(得分:0)

这可能意味着在province_id表的cities列中您有一些价值,例如123那里provinces列的id表中不存在。因此,MySQL不能强制执行外键(FK)约束,它会失败。

您可以通过以下方式找到违规记录:

SELECT * FROM `cities` WHERE `province_id` NOT IN 
(SELECT id FROM `provinces`)