8

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

 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

4 回答 4

13

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

于 2011-01-24T08:50:21.573 回答
6

INNODB :这可以像在删除索引之前删除关系一样简单。

于 2012-08-28T19:27:59.600 回答
2

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

检查COMMENTS表的主键以确保它没有UNSIGNED关键字,COMMENTS.id_user而外键具有 UNSIGNED 关键字。这个关键字导致了问题 - 字段类型不一致。

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

于 2009-09-20T16:28:17.087 回答
2

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

SHOW CREATE TABLE my_table

找到外键上索引对应的约束名称,

之后,尝试以下命令:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode

警告:如果您尝试使用外键名称删除外键,您将遇到错误!

于 2015-09-23T18:50:11.757 回答