MYSQL外键设置报错:3780、1452

MYSQL创建外键时提示:3780错误

原因:字符集和排序规则不对应。(同时注意数据类型,长度)
在这里插入图片描述
utf8mb4 和 utf8区别
utf8mb4 和 utf8区别 : https://blog.csdn.net/qq_17555933/article/details/101445526

MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。

Mysql中的utf8mb4是对 原先utf8只能存储3个字节大小的字符的一种补充,是一种真正的UTF-8编码。

MYSQL创建外键时提示:1452错误

原因:某些数据(主键)在子表存在,主表不存在。
查找

SELECT DISTINCT herb_id from formula_herb WHERE herb_id not in (SELECT DISTINCT herb_id from herbs)

继续报错:
在这里插入图片描述
检查没问题,子表中有的id主表中都有。其中某一个ID报错!

SELECT DISTINCT herb_id from herb_ingredient WHERE herb_id not in (SELECT DISTINCT herb_id from herbs);
结果:TCMA3396B382C70
但是
SELECT * from herbs WHERE  herb_id = 'TCMA3396B382C70';
能找到TCMA3396B382C70数据

重启电脑重启MySQL主表中删除此数据再重新添加 都没用

create table herb_add1 as SELECT * from herbs WHERE  herb_id = 'TCMA3396B382C70';
DELETE from herbs WHERE herb_id = 'TCMA3396B382C70';
insert into herbs select * from herb_add1;

关系表中删除此数据相关重新添加

DELETE from herb_ingredient WHERE herb_id = 'TCMA3396B382C70';
但是!!!!
SELECT herb_id from herb_ingredient WHERE herb_id not in (SELECT herb_id from herbs);
TCMA3396B382C70
依然能查出来TCMA3396B382C70

所有数据全部核实完毕,子表有的父表确定有,但还是报错!!!
在这里插入图片描述
卡一天了,跪求解决方案!!!

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页