gpt4 book ai didi

mysql - 奇怪的 "Cannot add or update a child row: a foreign key constraint fails"错误

转载 作者:行者123 更新时间:2023-11-29 02:56:45 24 4
gpt4 key购买 nike

我目前正在将 MySQL 数据库中的一个主要 ID 列从 INT 转换为 STRING。过程很简单,

  1. 删除引用该列的所有外键(您不能使用外键对其进行修改)
  2. 修改 ID 列以及在其他表中引用它的所有列
  3. 把外键加回去

除了第 3 步中出现以下错误的 1 个外键外,一切正常,

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`cp`.`#sql-1_13`, CONSTRAINT `widgets_candidate_id_foreign` FOREIGN KEY (`candidate_id`) REFERENCES `candidates` (`id`))

我对这个错误并不陌生。这通常意味着我的列名有误或其他原因,但在这种情况下,我很确定我没有,除非我要发疯了。请参阅下面的剪切表导出,

CREATE TABLE `candidates` (
`id` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
---- SNIP ----
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `widgets` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`candidate_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
---- SNIP ----
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2203 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC

MODIFY 查询是,

ALTER TABLE `widgets` 
ADD CONSTRAINT widgets_candidate_id_foreign FOREIGN KEY (`candidate_id`) REFERENCES `candidates` (`id`);

我认为唯一可能widgets 表上的 ROW_FORMAT=DYNAMICcandidate_id 是否可以存储在页面外,从而导致问题?

有什么想法吗?

谢谢。

最佳答案

您可以向已包含数据的表添加外键,但前提是父表中的每一行都存在子行。根据您收到的错误,我认为您的子表中有一个值在您的父表中已被弃用。

您可以进一步研究 Here .

您可以使用左联接或 IN 来查看哪些值存在于子表中而父表中不存在。有其他方法可以解决这个问题,但在您的特定环境中,您如何解决问题才真正有意义。

关于mysql - 奇怪的 "Cannot add or update a child row: a foreign key constraint fails"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com