我不能在mysql中删除外键

我不能在mysql中删除外键,mysql,Mysql,第一个desc命令中没有键。 MUL写在第二个desc命令的键列中。 MUL仍然写在第三个desc命令的键列中。 没有错误,但密钥仍然存在,我做错了什么?每个外键都需要一个支持外键检查的索引。当您创建一个外键约束,而您没有这样的索引时,MySQL将为您创建它。然后删除外键约束时,索引将保持不变。如果希望删除该索引,则需要显式地这样做 create table A(id int(9),id2 int(5),primary key(id))engine=innodb; create table B(

第一个desc命令中没有键。 MUL写在第二个desc命令的键列中。 MUL仍然写在第三个desc命令的键列中。
没有错误,但密钥仍然存在,我做错了什么?

每个外键都需要一个支持外键检查的索引。当您创建一个外键约束,而您没有这样的索引时,MySQL将为您创建它。然后删除外键约束时,索引将保持不变。如果希望删除该索引,则需要显式地这样做

create table A(id int(9),id2 int(5),primary key(id))engine=innodb;
create table B(ide int(9),ide2 int(5))engine=innodb;
desc B;
alter table B add constraint ide3 foreign key(ide) references A(id);
desc B;
alter table B drop foreign key ide3;
desc B;

演示:

当您试图放下fk时,会收到什么信息?您可能需要先删除使用它的约束。我将在这里发布此内容,因为它可能对您或将来尝试删除带有约束的表的读者有用。设置外键检查=0删除FK不会删除索引。您需要执行alter table B drop index ide3;后来,谢谢你的关注,它成功了。
create table A(id int(9),id2 int(5),primary key(id))engine=innodb;

create table B(ide int(9),ide2 int(5))engine=innodb;

alter table B add constraint ide3 foreign key(ide) references A(id);

alter table B drop foreign key ide3;

alter table B drop index ide3; -- add this line