笔者最近在学习尚硅谷的数据库课程时,又遇到了一个奇怪的小问题,但是老师在网课里却没有发现并解释如何去解决:
- 使用 `alter table` 语句删除外键约束:
alter table stuinfo drop foreign key fk_stuinfo_major;Terminal显示语句执行成功:

- 但是当使用 `show index` 语句再次查看索引时却发现依然存在:
show index from stuinfo;
原因是为什么呢?笔者经过搜索和阅读,找到了一种比较合理的解释:MySQL在创建外键后,会自动建一个同名的索引。而删除外键以后,这个同名索引如果没被删除,再次查询就还能看到。如果再执行一次删除同名索引,查询后就看不到了。
alter table stuinfo drop index fk_stuinfo_major;

这时候再次查询就没有了!

在SQLyog里面查询也是一样没有索引了:
desc stuinfo;

参考链接:
https://blog.youkuaiyun.com/digitalkee/article/details/102595614
在学习数据库课程中,遇到一个问题:使用`alter table`删除外键后,通过`show index`发现外键依然存在。原因是MySQL创建外键时会自动生成同名索引,删除外键但索引未删除。解决办法是额外删除同名索引,之后查询就看不到外键索引了。这个问题在SQLyog中同样适用。





