Mysql无法添加或更新子行,外键相关失败

时间:2012-07-26 02:17:56

标签: mysql database database-design foreign-key-relationship

  

错误:无法添加或更新子行:外键约束失败

以下是创建错误的代码:

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的结构并且它没有问题,但是当我插入数据时,我得到了上述相关错误。我在某个地方阅读并且我预测它是因为糟糕的数据。错误的其他可能性是什么?任何建议或解决方案都会很棒。

2 个答案:

答案 0 :(得分:0)

“对于InnoDB以外的存储引擎,MySQL Server在CREATE TABLE语句中解析FOREIGN KEY语法,但不使用或存储它。”

来自:http://dev.mysql.com/doc/refman/5.5/en/ansi-diff-foreign-keys.html

我不确定,但如果你的表是MyISAM而不是InnoDB,你的语法可能不起作用。

答案 1 :(得分:0)

错误消息表示您尝试放入attribute_id列的任何数字在eav_attribute.attribute_id列中尚不存在。

您可以在eav_attribute.attribute_id中插入 已经存在的值吗? (你可能可以。)

您是否可以通过尝试在eav_attribute.attribute_id中插入的值来激发相同的错误?

协调差异,你就完成了。您需要确定eav_attribute.attribute_id中不存在哪些属性ID,并修复它。