Home >Database >Mysql Tutorial >mysql修改索引时,外键约束造成的奇怪问题_MySQL

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

WBOY
WBOYOriginal
2016-06-01 13:37:281260browse

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
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn