错误:无法添加或更新子行:外键约束失败
以下是造成错误的代码:
ALTER TABLE 'catalog_eav_attribute'
ADD CONSTRAINT 'FK_CATALOG_EAV_ATTRIBUTE_ID'
FOREIGN KEY ('attribute_id') REFERENCES 'eav_attribute' ('attribute_id)'
ON DELETE CASCADE ON UPDATE CASCADE;
我上传了SQL的结构,它没有问题,但当我插入数据时,我会收到上面的相关错误。我在某个地方读过书,我预测它是因为糟糕的数据。出现错误的其他可能性是什么?任何建议或解决方案都会很棒。
"对于InnoDB以外的存储引擎,MySQL Server解析CREATE TABLE语句中的FOREIGN KEY语法,但不使用或存储它。"
发件人:http://dev.mysql.com/doc/refman/5.5/en/ansi-diff-foreign-keys.html
我不确定,但如果您的表是MyISAM而不是InnoDB,那么您的语法可能不起作用。
错误消息意味着您试图放入attribute_id列的任何数字在eav_attribute.attribute_id列中都不存在。
是否可以插入eav_attribute.attribute_id中已经存在的值?(你可能可以。)
您是否可以通过尝试在eav_attribute.attribute_id中插入一个不存在的值来引发同样的错误?
调和分歧,你就完了。您需要确定eav_attribute.attribute_id中不存在哪些属性id,并修复此问题。