外键约束失败

时间:2013-04-22 05:46:36

标签: php mysql

我在php和mysql中比较新。我在leave table.My leave表中插入值时遇到的问题包含以下列..

1.lid(INT主键)

2.empname(VARCHAR)

3.username(VARCHAR)

4.nod(INT)

5.sdate(DATE)

6.edate(DATE)

7.reason(varchar)

8.action(VARCHAR)

9.empID(INT FOREIGN KEY)

此处empID是来自foreign key表的users引用。将值插入leave table.ERROR时面临的问题如下所示

无法添加或更新子行:外键约束失败(db_attendance1leave,CONSTRAINT leave_ibfk_1 FOREIGN KEY(empID)REFERENCES {{ 1}}(users))

这里我只是发送查询,这里是..

empID

3 个答案:

答案 0 :(得分:8)

你可以把

SET FOREIGN_KEY_CHECKS=0;

并运行您的查询。完成后,再次将其设置为1

SET FOREIGN_KEY_CHECKS=1;

答案 1 :(得分:7)

外键约束意味着您的一个表不接受将“中断”外键的插入,更新或删除。这意味着,如果用户中不存在新的EmpID,则无法更新EmpID。如果在users表等中不存在新的EmpID,则无法添加新的EmpID。 因此,要解决此问题,您需要确保您尝试添加到表'leave'的EmpID首先存在于表'users'中。 外键可以是一个真正强大的项目,但也可能是一个真正的痛苦。由于你正在处理的数据库有外键约束,我建议你稍微阅读一下:http://en.wikipedia.org/wiki/Foreign_key

答案 2 :(得分:0)

Borniet,你帮我解决了类似的问题。

@OP - 我必须做的就是在表中创建一个相应的行,以便存在外键。 例如。表1列有名称 表2列有friends_name,一个与表1中的Name绑定的外键。 我得到了这个错误,因为我试图在表2中插入一行,其中friends_name引用了表1中的一个不存在的名称。所以我创建了名称,我们将参加比赛:)。