解决mysql执行删除表中外键的语句,外键却仍然存在的问题

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

笔者最近在学习尚硅谷的数据库课程时,又遇到了一个奇怪的小问题,但是老师在网课里却没有发现并解释如何去解决:

  1. 使用 `alter table` 语句删除外键约束:
    alter table stuinfo drop foreign key fk_stuinfo_major;

    Terminal显示语句执行成功:

  2. 但是当使用 `show index` 语句再次查看索引时却发现依然存在:
    show index from stuinfo;

原因是为什么呢?笔者经过搜索和阅读,找到了一种比较合理的解释:MySQL在创建外键后,会自动建一个同名的索引。而删除外键以后,这个同名索引如果没被删除,再次查询就还能看到。如果再执行一次删除同名索引,查询后就看不到了。

alter table stuinfo drop index fk_stuinfo_major;

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

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

desc stuinfo;

参考链接:

https://blog.csdn.net/digitalkee/article/details/102595614

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值