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

删除索引时出现MySQL错误(错误号150),mysql,sql,mysql-error-1025,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\u user是简单的主键索引 我使用的是MySQL版本5.0.85,根据,错误与主键字段的定义有关。错误与外键索引无关

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

 ALTER TABLE `comments` DROP INDEX `id_user`  
哪个输出

 1025 - Error on rename of './postuj_cz1/#sql-d834_a0c704' 
 to './postuj_cz1/comments' (errno: 150) 
另一个表上的
id\u user
是简单的主键索引

我使用的是MySQL版本5.0.85,根据,错误与主键字段的定义有关。错误与外键索引无关

检查
COMMENTS
表的主键,确保它没有
未签名的
关键字,而
COMMENTS.id\u user
外键有未签名的关键字。此关键字导致问题-字段类型不一致


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

还有其他原因。例如,我有一个包含两个独立外键列的唯一索引。在删除唯一索引之前,我必须删除有问题的外键。(很明显,您可以在之后再添加外键。)

INNODB:这可能很简单,只需在删除索引之前删除关系即可。

索引用于“用户”表上的外键,因此 首先,尝试以下命令:

SHOW CREATE TABLE my_table
查找与外键上的索引对应的约束的名称

然后,尝试以下命令:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode

警告:如果您试图删除具有外键名称的外键,则将出现错误

首先尝试删除表中的所有外键。事实上,我没有表中的任何fk谢谢,这就是我的问题所在。确切地说,删除唯一索引导致我的外键引用了一个不可能的“非唯一”字段。在我的情况下,该关系锁定了所有内容。所以,删除关系,接下来删除索引,接下来创建新索引,然后恢复关系这对我来说是一个很好的解决方案,似乎foreing键不能与drop index语句一起删除。