2010-09-16 148 views
2

我不需要這個錯誤來解決。我只需要明白它的意思,所以我可以自己來處理它。mysql - 這個錯誤是什麼意思?

Cannot add or update a child row: a foreign key constraint fails 
    (`db`.`transaction`, CONSTRAINT `transaction_ibfk_2` 
    FOREIGN KEY (`product_id`) REFERENCES `product` (`id`)) 

INSERT INTO `transaction` (`client_id`, `cost`, `website_id`, `product_id`, 
    `template_number`, `value`, `order_id`) 
    VALUES ('17', '', '2480', '', '', '12', '1'); 

什麼是外鍵?它是如何設置的?

CONSTRAINT transaction_ibfk_2是什麼意思?

這是否意味着我需要一個名爲transaction_ibfk_2的表?

謝謝。

+1

我建議你Google'外鍵'並先做一些閱讀。 – Brissles 2010-09-16 09:51:12

回答

0

要插入(列表中的項目四)一個空字符串作爲productid

INSERT INTO transaction 
(client_id, cost, website_id, product_id, template_number, value, order_id) 
VALUES ('17', '', '2480', '', '', '12', '1') 

有一個參照完整性約束成立,以確保您只能插入productid小號匹配一個被引用product表。

0

這意味着您試圖將值添加到外鍵列中,該列在引用列中不可用或試圖在外鍵列中添加空白。 即您試圖將product_id添加爲不允許的空白。外鍵列中的所有值都必須是主引用列標識中存在的有效值。

0

約束名稱和表格之間並不一定有關係,儘管大多數人會恰當地命名它們以使他們的生活更輕鬆。

這一切意味着你有一個transaction_ibfk_2約束。實際的問題是在消息的其餘部分:

FOREIGN KEY (product_id) REFERENCES product (id) 

你需要插入一行到您的product榜第一。你插入的id應該是product_id你試圖插入transaction(這是''由於某種原因 - 我非常確定這應該是一個真正的價值(或可能爲NULL))。

您可以使用create tablealter table DDL語句的子句創建外鍵。