mysql修改索引时,外键约束造成的奇怪问题_MySQL
程序员文章站
2022-04-22 07:53:48
...
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
推荐阅读
-
mysql导入数据时的外键约束问题
-
mysql处理添加外键时提示error 150 问题的解决方法
-
【转】《与MySQL的零距离接触》第三章:约束以及修改数据表 (3-3:MySQL 外键约束的参照操作)
-
mysql处理添加外键时提示error 150 问题的解决方法
-
mysql中关于外键约束的小问题
-
mysql修改索引时,外键约束造成的奇怪问题_MySQL
-
mysql中关于外键约束的小问题
-
mysql修改索引时,外键约束造成的奇怪问题_MySQL
-
mysql处理添加外键时提示error 150 问题的解决方法_MySQL
-
JPA Mysql/MariaDB DDL定制外键解决单向关联时无法级联删除的问题