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

时间:2014-08-04 15:11:17

标签: php mysql

任何人都可以帮我解决这个数据库错误,我在一个名为

的表上插入数据
subjectdetails(
    subjectid int primarykey,
    subject varchar(50),
    semid int //foreign key from the table semester
    departmentid int(11) // foreign key from the table department
)

现在,当我插入一个主题时,它只显示SEMID上的错误,如下面的错误 无法添加或更新子行:外键约束失败

(`studentcorner/subjectdetails`, CONSTRAINT `subjectdetails_ibfk_1` FOREIGN KEY 
(`SEMID`) REFERENCES `semester` (`SEMID`) ON DELETE NO ACTION ON UPDATE NO ACTION) 

请帮帮我..

1 个答案:

答案 0 :(得分:2)

错误表明您有一个无法满足的外键约束。具体来说,您尝试插入带有无效subjectdetails列的semid条目。您用于semid的值无效,因为在semester表中找不到该值。我知道这是因为您的错误消息表明了这一点。

要修复此错误,请确保您尝试为semid列插入的值实际上首先存在于semesters表中。

我建议您阅读文档并重新阅读Using Foreign Key Constraints部分。该页面中关于您的问题的相关报价是这个(强调我的):

  

对于支持外键的存储引擎,如果父表中没有匹配的候选键值,MySQL会拒绝任何尝试在子表中创建外键值的INSERT或UPDATE操作。