删除索引时出现MySQL错误(错误150)

时间:2009-09-20 13:43:04

标签: mysql sql mysql-error-1025

我遇到了删除外键索引的问题,我总是得到同样的错误

 ALTER TABLE `comments` DROP INDEX `id_user`  

输出

 1025 - Error on rename of './postuj_cz1/#sql-d834_a0c704' 
 to './postuj_cz1/comments' (errno: 150) 

另一个表上的id_user是简单的主键索引。

我使用的是MySQL 5.0.85版本

4 个答案:

答案 0 :(得分:13)

还有其他原因。例如,我有一个涉及两个独立外键列的唯一索引。在删除唯一索引之前,我不得不删除有问题的外键。 (显然你可以在之后添加外键。)

答案 1 :(得分:6)

INNODB:这可能就像删除Index之前删除Relation一样简单。

答案 2 :(得分:2)

根据this link,错误与主键字段的定义有关。该错误与外键索引无关。

检查COMMENTS表的主键,确保UNSIGNED外键具有UNSIGNED关键字时没有COMMENTS.id_user关键字。此关键字导致问题 - 字段类型不一致。

要修复此问题,请将UNSIGNED关键字添加到COMMENTS表的主键定义中。或者从外键定义中删除UNSIGNED关键字...

答案 3 :(得分:1)

索引是'user'表上的外键,所以 首先,尝试以下命令:

SHOW CREATE TABLE my_table

找到与外键索引相对应的约束名称

然后,尝试命令:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode

警告:如果您尝试使用外键名称删除外键,则会出错!

相关问题