gpt4 book ai didi

Mysql错误代码1452,两个表具有不同的数据库引擎

转载 作者:行者123 更新时间:2023-11-29 08:36:12 27 4
gpt4 key购买 nike

我有两个表“mm_ads”和“mm_users”。 'mm_ads' 使用 Myisam 数据库引擎,而 'mm_users' 使用 InnoDb。据我了解,在这种情况下不可能创建外键引用,因为后一个引擎是事务性的,而第一个引擎不是。但是当我运行时:

ALTER TABLE mm_ads ADD CONSTRAINT FK_76EC3E1DF132696E3358 FOREIGN KEY (userid) REFERENCES mm_users (id)

没有显示错误,它只报告受影响的行数,仅报告其他内容。我发现 fk 不只是在表中的列上创建索引。当我研究这个问题时,我发现表的引擎不同,所以我将mm_ads的引擎更改为Innodb。但当我运行命令时,我收到此错误。

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`admin_pw`.<result 2 when explaining filename '#sql-61b_3019e'>, CONSTRAINT `FK_76EC3E1DF132696E3358` FOREIGN KEY (`userid`) REFERENCES `mm_users` (`id`))

userid 和 id 的类型相同,并且我在表中有值。

最佳答案

我会执行以下操作:

<强>1。删除外键

ALTER TABLE mm_ads DROP FOREIGN KEY `FK_76EC3E1DF132696E3358`;

<强>2。识别子表中的孤立行

SELECT * FROM mm_ads when userid not in (select id from mm_users);

<强>3。处理子表中的孤立行

mm_ads 中删除行吗?将行插入 mm_users 中?这里由你决定。无论哪种方式,基于 mm_ads.userid > mm_users.id 关系,最终 mm_ads 中都不会出现孤立行。

<强>4。更改引擎

ALTER TABLE mm_ads ENGINE = InnoDB;

<强>5。恢复外键

ALTER TABLE mm_ads ADD CONSTRAINT FK_76EC3E1DF132696E3358 FOREIGN KEY (userid) REFERENCES mm_users (id);

关于Mysql错误代码1452,两个表具有不同的数据库引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15137289/

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