[英]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.