我不需要解决此错误。我只需要了解它的意义所以我可以自己处理它。
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
的表?
感谢。
答案 0 :(得分:0)
您正在插入一个空字符串productid
(列表中的第四项)
INSERT INTO transaction
(client_id, cost, website_id, product_id, template_number, value, order_id)
VALUES ('17', '', '2480', '', '', '12', '1')
设置了参照完整性约束,以确保您只能在引用的productid
表中插入匹配的product
。
答案 1 :(得分:0)
这意味着您正在尝试将值添加到外键列中,该列在引用列中不可用或尝试在外键列中添加空白。 即您试图将product_id添加为空白,这是不允许的。外键列中的所有值必须是主引用列id中的有效值。
答案 2 :(得分:0)
约束名称和表格之间不一定存在关系,尽管大多数人都恰当地命名它们以使他们的生活更轻松。
所有这些意味着您有transaction_ibfk_2
约束。实际问题出现在消息的其余部分:
FOREIGN KEY (product_id) REFERENCES product (id)
您需要先在product
表格中插入一行。你在那里插入的id
应该是product_id
你要插入transaction
''
由于某种原因 - 我很确定这应该是一个真实的值(或可能是NULL))。
您可以使用create table
或alter table
DDL语句的子句创建外键。