您的位置:首页 > 数据库 > MySQL

mysql Cannot add or update a child row: a foreign key constraint fails

2016-05-07 16:40 676 查看
今天在mysql中执行了一句追加一列属性

ALTER TABLE `share` ADD COLUMN `goods_id` INT(20) NOT NULL AFTER `userId`


然后为goods_id 增加外键约束

ALTER TABLE  `share` ADD CONSTRAINT  `fk_9_2` FOREIGN KEY (  `goods_id` )
REFERENCES  `goods` (  `id` )
ON DELETE CASCADE ON UPDATE CASCADE


果不其然,上天还是不能给自己太多甜头吃,冷不丁给你来点困难

错误码: 1452

Cannot add or update a child row: a foreign key constraint fails (`1go`.`#sql-16ec_1f`, CONSTRAINT `fk_999` FOREIGN KEY (`goods_id`) REFERENCES `goods` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)

Execution Time : 00:00:00:000

Transfer Time : 00:00:00:000

Total Time : 00:00:00:000

观察了表,发现表中存在了数据,而且 goods_id 列默认全部被赋值 0

原因就很简单了,都为零都指向了table `goods` 所以 外键指向了一个不存在的goods id=0 的goods字段,自然就插不进去,提示更新update a child row error 了。。

解决方法,很简单:

第一种

就是把0改成 goods表(副表)中已经存在的 一个child row 数据

如如果商品表(goods)存在 id = 1 的字段,那么你就可以把 0 改成 1

第二种:

not null字段影响了。

先删除掉not null

再把

》goods_id

0


改成

》goods_id

(NULL)


最后再添加外键约束即可~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: