Maison > base de données > tutoriel mysql > mysql修改索引时,外键约束造成的奇怪问题_MySQL

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

WBOY
Libérer: 2016-06-01 13:37:28
original
1258 Les gens l'ont consulté

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
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal