【问题标题】:Error 1452 thrown, while parent rows exist错误 1452 抛出,而父行存在
【发布时间】:2023-04-01 04:03:01
【问题描述】:

我在INSERT 上收到 1452 错误(如下),但这没有意义。

表格:

# Has parent field
CREATE TABLE IF NOT EXISTS `price_comp_group` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`headline` VARCHAR(255) NOT NULL,
`text` TEXT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

# Has child field
CREATE TABLE IF NOT EXISTS `price_comp_group_drug` (
`group_id` INT(10) NOT NULL,
`drug_id` INT(10) UNSIGNED NOT NULL,
`item_order` INT(10) NOT NULL,
CONSTRAINT `fk_group_id_drug` FOREIGN KEY (`group_id`) REFERENCES `price_comp_group`(`id`)
    ON DELETE CASCADE,
CONSTRAINT `fk_drug_id_drug` FOREIGN KEY (`drug_id`) REFERENCES `drug`(`ID`)
    ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

# Unique index
ALTER TABLE `price_comp_group_drug`
ADD UNIQUE INDEX idx_group_drug
(`group_id`, `drug_id`);

现在,我正在尝试进行这样的多次插入:

INSERT INTO `price_comp_group_drug` (`group_id`, `drug_id`, `item_order`)
VALUES (1, 1, 1), (1, 2, 3), (0, 3, 6);

我明白了:

#1452 - 无法添加或更新子行:外键约束失败 (dev23_db.price_comp_group_drug, CONSTRAINT fk_group_id_drug FOREIGN KEY (group_id) REFERENCES price_comp_group (id ) 删除级联)

  • id = 1 的组存在
  • ID = 1、2、3 的药物存在

那么为什么我会看到这个错误?如果我尝试使用 没有 有父级的 FOREIGN KEY 值插入/更新行...

【问题讨论】:

  • 能不能把药表建表sql?
  • 你的 price_comp_group 表在哪里?

标签: mysql insert


【解决方案1】:

在您提供的插入语句中,外键不能为零。

在第三行的插入语句中'group_id'被指定为'0'。

由于 group_id 上有一个外键,因此会引发错误。

【讨论】:

  • 但是这个零不应该是item_order 列的第一个值吗? group_id 值位于第一个括号中:(1, 1, 1)。还是我错了?
  • 天啊....我明白了。你是绝对正确的。我没有得到多重插入语法。谢谢!
猜你喜欢
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
相关资源
最近更新 更多