2013-04-22 234 views
0

我在PHP和,而我在leave table.My包含以下列leave表中插入值我面臨的問題mysql.The比較新..外鍵約束失敗

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外鍵)

這裏empIDforeign key參考文獻users表。雖然插入值到leave table.ERROR即時通訊面臨的問題下面給出

不能添加或更新子行:外鍵約束失敗(db_attendance1leave,約束leave_ibfk_1外鍵(empID)參考文獻usersempID))

在這裏,我只是發送查詢,並在這裏是..

mysql_query("INSERT INTO `leave` 
      (`empname`, `username`, 
      `nod`, `sdate`, `edate`, 
      `reason`,`action`) 
      VALUES ('$empname', '$username', 
      '$nod', '$sdate', 
      '$edate', '$reason','');", 
      $dbCon) or die(mysql_error()); 
+0

肯定EMPID到用戶表... – 2013-04-22 05:48:42

+0

親愛的朋友,爲什麼你張貼重複。 HTTP://計算器。com/questions/16139572/database-not-taking-the-table/16139718#16139718 – Amir 2013-04-22 05:54:48

回答

6

外鍵約束意味着塔如果一個表不接受插入,更新或刪除操作,這些插入,更新或刪除操作會「破壞」外鍵。這意味着,如果用戶中不存在新的EmpID,則無法更新EmpID。如果用戶表中不存在新的EmpID,則不能添加新的EmpID等。 因此,要解決此問題,您需要確保您試圖添加到表'離開'的EmpID首先存在於表'用戶'中。 外鍵可以是一個真正強大的項目,但也可能是一個真正的痛苦。由於你正在使用的數據庫有外鍵約束,我建議你讀一下他們:http://en.wikipedia.org/wiki/Foreign_key

0

Borniet,你幫我解決了我的類似問題。

@OP - 我所要做的只是在表中創建一個對應的行,以便存在外鍵。 例如表1有列名稱 表2的列名friends_name,與表1中的名稱綁定的外鍵。 我得到此錯誤是因爲我試圖向表2中插入一行,其中friends_name引用表1中的一個不存在的名稱所以我創造了這個名字,而且我們是爲了比賽:)。

5

你可以把

SET FOREIGN_KEY_CHECKS=0; 

和運行查詢。一旦你第一次做了重新設置回1通過

SET FOREIGN_KEY_CHECKS=1; 
+0

這可能會起作用,但也可能導致一些無效數據進入你的表。只有在確定錯誤是虛假的情況下才關閉外鍵。 – Durandal 2014-01-28 05:14:16