Heim > Datenbank > MySQL-Tutorial > mysql修改索引时,外键约束造成的奇怪问题_MySQL

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-01 13:37:28
Original
1271 Leute haben es durchsucht

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
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage