MYSQL:外键删除后,查询表发现外键依旧存在的原因及相关解决办法
1、创建表test
create table test(
id int(5) not null primary key,
wid int(5) not null);
查看表结构
2、创建student表
create table student(
id int(5) not null primary key);
查看表结构
3、修改表结构来创建外键(test表的wid列对应student表的id列)
alter table test add foreign key(wid) references student(id);
查看表结构---显示有外键了
4、删除外键
首先通过查看创建test表语句查看外键约束名
show create table test;
可以看到外键约束名是test_ibfk_1
通过约束名删除外键
alter table test drop foreign key test_ibfk_1;
外键删除成功!
5、查看表结构可以看到还是存在外键!!!!
这是因为删除外键没有删除干净,原因如下;
显然这是MYSQL的一个BUG:
MYSQL在建外键后,会自动建一个同名的索引
所以你必须需要再次删除该索引
over!!!