簡體   English   中英

mysql-此錯誤是什么意思?

[英]mysql - what does this error mean?

我不需要解決此錯誤。 我只需要了解它的含義,就可以自己解決這個問題。

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的表?

謝謝。

您正在插入一個空字符串作為productid (列表中的第四項)

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

設置了參照完整性約束,以確保您只能在參照product表中插入與之匹配的productid

這意味着您試圖在外鍵列中添加一個在引用列中不可用的值,或者試圖在外鍵列中添加空白。 即您正在嘗試將product_id添加為空白,這是不允許的。 外鍵列中的所有值必須是主引用列ID中存在的有效值。

約束名稱和表之間不一定存在關系,盡管大多數人都對它們進行了適當命名,以使生活更輕松。

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

FOREIGN KEY (product_id) REFERENCES product  (id)

您需要先在product表中插入一行。 您在其中插入的id應該是您要插入transactionproduct_id (出於某種原因,它為'' -我很確定這應該是真實值(或可能為NULL))。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM