[英]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
應該是您要插入transaction
的product_id
(出於某種原因,它為''
-我很確定這應該是真實值(或可能為NULL))。
您可以使用create table
的子句或alter table
DDL語句創建外鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.