【问题标题】:mysql - what does this error mean?mysql - 这个错误是什么意思?
【发布时间】:2011-04-13 03:12:00
【问题描述】:

我不需要解决此错误。我只需要了解它的含义,这样我就可以自己处理它。

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

谢谢。

【问题讨论】:

  • 我建议你谷歌“外键”并先阅读一下。

标签: mysql mysql-error-1452


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      FOREIGN KEY (product_id) REFERENCES product  (id)
      

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

      您可以使用create tablealter table DDL 语句的子句创建外键。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-01
        • 2018-11-29
        • 2011-03-01
        • 2012-11-06
        相关资源
        最近更新 更多