我有一个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)。
答案 0 :(得分:0)
这可能意味着在province_id
表的cities
列中您有一些价值,例如123那里provinces
列的id
表中不存在。因此,MySQL不能强制执行外键(FK)约束,它会失败。
您可以通过以下方式找到违规记录:
SELECT * FROM `cities` WHERE `province_id` NOT IN
(SELECT id FROM `provinces`)