使用SQL语句为一张表添加外键时遇到1452和3780报错

有两张表分别是student和xyz,要把student中的xyzid字段作为外键,xyz表中的xyzid为主键

首先确定SQL语句无误

ALTER TABLE student
ADD CONSTRAINT `Fr_xyzid` FOREIGN KEY(`xyzid`) REFERENCES `xyz`(`xyzid`);
/**ADD CONSTRAINT <约束名> FOREIGN KEY(`引用列`) REFERENCES `主表`(`主键`)*/

一开始报错1452

查询出如下链接有外键的子表对应的主表中没有数据
于是对xyz表添加了一些数据

然后就是报错3780

查得如下链接外键null约束与Unsigned约束一定要与主键一样,否则就报错
到此时我仍然是满脸懵逼的状态,又去仔细的对比了外键列和被引用列的参数设定

此时我对自己的SQL语句产生怀疑,没办法使用SQLyog中可视化的添加外键方法竟然还是报错,而且提示的SQl语句和我自己写的没差别,并变成了如下错误

结果又跑回了1452报错

再找一个回答1452三种原因
应该是第三种什么什么不匹配的问题

解决方法就是删除外键列,重新添加空值外键列(这里说的就是student表中的xyzid这一列)
并且在重新添加时还是要注意和xyz表中主键设置一致

这次再使用可视化添加外键成功

删除外键

再次使用执行SQL语句添加外键

成功!

posted @ 2022-03-22 14:44  20220318暴力昵称  阅读(493)  评论(0)    收藏  举报