【问题标题】:PHP/MySQL: "Cannot add or update a child row: a foreign key constraint fails"PHP/MySQL:“无法添加或更新子行:外键约束失败”
【发布时间】:2012-03-14 01:24:58
【问题描述】:

我对 (My)SQL 比较陌生,并且已经用头敲击键盘超过两天了。我似乎无法解决问题。我有一个包含三个表的数据库:itemscoordsprice。 table items 与 price 具有非强制的一对多关系,与 coords 具有强制的 1:1 关系。每当我尝试更新所有三个时,都会收到此错误:

"无法添加或更新子行:外键约束失败

(`items`.`items`, CONSTRAINT `fk_items_coords1` FOREIGN KEY (`coords_idCoords`) REFERENCES `coords` (`idCoords`) ON DELETE NO ACTION ON UPDATE NO ACTION)

"

我已经尝试了我能找到和想到的所有方法:更改插入顺序、更改关系本身、首先手动添加(我知道这是必须的)等等。我也尝试将它们都更改为暂时强制,因为我注意到在插入价格外键时不会发生此问题。但是,我发现它只是插入了一个空值。它可能有一个非常简单的解决方案,但我就是无法理解它。

Here is my PHPhere is my SQL

我很清楚 PHP 很草率(尤其是两个单独的查询),但是一旦我解决了这个问题,我就会解决这个问题。我希望我已经为您提供了足够的信息。如果您还有什么需要,请告诉我。提前致谢。

【问题讨论】:

    标签: php mysql null foreign-keys foreign-key-relationship


    【解决方案1】:

    嗯,问题很简单。您正在尝试将一些 coord 插入到 items 中,其中不存在具有此类 ID 的坐标。

    仔细检查您尝试插入的数据...

    【讨论】:

    • 然而,两个坐标中都有数据作为价格。
    • 是的,但关键是错误的键值被插入到items。那怎么样?
    • 那么您建议如何解决这个问题?抱歉,我对此比较陌生。
    • 用一些 sql insert 语句自己创建一个文件。这将有助于将问题缩小到特定的陈述。还可以考虑在没有约束的情况下重建架构,并准确查看插入的内容。
    • 我尝试通过忽略外键进行插入,并且所有内容都被插入,包括应该是 price_idPrice 和 coords_idCoords 的两个 NULL 值。那么让我创建一个文件。
    猜你喜欢
    • 2015-07-26
    • 2012-10-09
    • 2015-06-06
    • 2016-08-09
    • 2011-03-31
    • 2013-08-10
    • 1970-01-01
    • 2018-12-02
    • 2016-05-23
    相关资源
    最近更新 更多