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;
第一个“ desc”命令中没有键。 在第二个“ desc”命令的密钥列中写入“ MUL”。 在第三个“ desc”命令的键列中仍会写入“ MUL”。 没有错误,但密钥仍然存在,我做错了什么?
答案 0 :(得分:1)
每个外键都需要一个可以支持外键检查的索引。创建外键约束时,如果没有这样的索引,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;
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