无法创建外键约束

时间:2012-05-27 12:33:26

标签: php mysql sql

我有客户,反馈和维修表。客户可以提供许多反馈并进行多次维修。在反馈表中,我创建了一个clientid列(也添加了索引),并且我能够为clients表的clientid列(主键)创建一个外键。

问题是我无法对维修表做同样的事情。即使我在修复表中创建了一个clientid列(索引)并且它与clients表中的clientid具有相同的属性,我得到以下内容:

MySQL说:文档

  

#1452 - 无法添加或更新子行:外键约束   失败(ccsdb。,   CONSTRAINT #sql-3f0_8e5_ibfk_1 FOREIGN KEY(client_id)参考   clientsclient_id)ON UPETE CASCADE ON UPDATE CASCADE)

1 个答案:

答案 0 :(得分:0)

MySQL FK Doc

中引用了该错误(Cannot add or update a child row: a foreign key constraint fails

要在2个表之间添加引用,条件必须适合现有数据。

这意味着如果您说table1.id = table2.id,那么table1table2的所有ID都必须匹配。

要解决此问题,您必须消除或修复那些不匹配的行。
例如:

table1.id  |  table2.fk
   1       |       1      ok 
   2       |     null     error
   3       |       4      error if id 4 is not in table1