今天在mysql中执行了一句追加一列属性
ALTER TABLE `share` ADD COLUMN `goods_id` INT(20) NOT NULL AFTER `userId`
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)
最后再添加外键约束即可~~~