2

我不需要解决这个错误。我只需要了解它的含义,这样我就可以自己接近它。

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

谢谢。

4

3 回答 3

0

约束名称和表之间不一定有关系,尽管大多数人会适当地命名它们以使他们的生活更轻松。

这一切意味着你有一个transaction_ibfk_2约束。实际问题在消息的其余部分:

FOREIGN KEY (product_id) REFERENCES product  (id)

您需要先在表中插入一行product。你插入的id应该是product_id你试图插入的transaction(这是''出于某种原因 - 我很确定这应该是一个真实的值(或者可能是 NULL))。

create table您可以使用 the或alter tableDDL 语句的子句创建外键。

于 2010-09-16T09:53:30.343 回答
0

您正在插入一个空字符串作为productid(列表中的第四项)

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

设置了一个参照完整性约束,以确保您只能在被引用的表中插入productid与一个匹配的 s 。product

于 2010-09-16T09:51:37.490 回答
0

这意味着您正在尝试将值添加到引用列中不可用的外键列中,或者尝试在外键列中添加空白。即您正在尝试将 product_id 添加为空白,这是不允许的。外键列中的所有值必须是主引用列 id 中存在的有效值。

于 2010-09-16T09:53:02.497 回答