欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql修改索引时,外键约束造成的奇怪问题_MySQL

程序员文章站 2022-05-08 12:39:28
...
Mysql外键 bitsCN.com


mysql修改索引时,外键约束造成的奇怪问题

事情是这样的,在Windows的mysql5.5 ,我想修改一个表的索引,于是执行

[sql]

ALTER TABLE practice_log DROP INDEX ix_practice_log_userid;

ALTER TABLE practice_log ADD INDEX ix_practice_log_userid(userid,practicetime);

但是报错:unable drop index 。。。: needed in a foreign key constraint

于是,强行把外键约束检查关闭:

[sql]

SET FOREIGN_KEY_CHECKS=0;

ALTER TABLE practice_log DROP INDEX ix_practice_log_userid;

ALTER TABLE practice_log ADD INDEX ix_practice_log_userid(userid,practicetime)

SET FOREIGN_KEY_CHECKS=1;

索引修改成功。

但是,问题来了。。。。。

重启数据库后,表 practice_log 不见了!

删除表practice_log,报错:表不存在;

建表,报错:表已存在!

这应该是mysql的bug。

解决办法:不要用SET FOREIGN_KEY_CHECKS=0;老老实实得删掉外键约束吧,再修改索引,搞定。

另外,约束影响性能,尽量不要用。

bitsCN.com
相关标签: Windows mysql