【问题标题】:Mysql Cannot add or update a child row a foreign key constraint fails ON DELETE NO ACTION ON UPDATE NO ACTIONMysql 无法添加或更新子行外键约束失败 ON DELETE NO ACTION ON UPDATE NO ACTION
【发布时间】:2014-10-06 11:22:55
【问题描述】:

我有“父”和“子”表。 'child' 表中有一个 'parent_id' 列,它是一个外键。 “父”表中的“id”列不是 NULL 和 INT。 'parent_id' 也是 INT 但默认为 NULL。 因此,当我使用 NULL 'parent_id' 向 'child' 添加新行时,我收到一条错误消息:

无法添加或更新子行:外键约束失败 (db.child, CONSTRAINT child_ibfk_1 FOREIGN KEY (parent_id) REFERENCES parent (id) ON DELETE NO ACTION ON更新无操作)

CREATE DATABASE db;
USE db;

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (id INT NULL, 
                    parent_id INT NULL DEFAULT NULL,
                    CONSTRAINT child_ibfk_1 FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=INNODB;


INSERT INTO child (id, parent_id) VALUES (1, NULL);

【问题讨论】:

  • 请添加您使用的create table 语句和insert 语句。
  • 很奇怪,因为当我在 phpmyadmin 中做同样的事情时,我收到一条消息“处理请求中的错误”,尽管正在插入行。
  • 这听起来更像是一个 phpMyAdmin 错误/问题。为什么不尝试不同的 SQL 客户端?
  • 实际上,我在 php 上有一个网络应用程序,它连接到我的数据库。我有一个表格来添加一个孩子。当我使用 NULL 'parent_id' 提交时出现错误。所以也许这不是 phpmyadmin 的错误。

标签: mysql sql null sql-insert


【解决方案1】:

解决了。问题出在我使用的 php 代码中。 sql语句没有问题。 谢谢大家!

【讨论】:

    【解决方案2】:

    你可以使用

    ON DELETE SET NULL ON UPDATE NO ACTION

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2015-07-26
      相关资源
      最近更新 更多