2009-09-20 86 views
8

我有问题下降外键索引,我总是得到同样的错误MySQL错误时,下降指数(错误150)

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

+1

先尝试删除所有外键的表。 – 2009-09-20 13:47:11

+0

其实我没有任何FK表 – 2009-09-20 13:58:00

回答

2

this link,错误涉及主键字段的定义。该错误不是关于外键索引。

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

要解决的UNSIGNED关键字添加到主键定义为COMMENTS表。或从外键定义中删除UNSIGNED关键字...

11

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

+1

谢谢,这是在我的情况的问题。 – nightcoder 2011-08-13 23:45:03

5

INNODB:这可能是因为删除索引之前删除的关系那样简单。

+1

对我而言,这种关系锁定了一切。因此,删除关系,然后删除索引,然后创建新索引,然后恢复关系 – Vaseltior 2012-09-30 22:21:57

1

该指数是对“用户”表的外键,所以 在第一,试试这个命令:

SHOW CREATE TABLE my_table 

找到对应的指数外键约束的名字,

,之后,用命令:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode 

警告:如果您尝试删除与外键名称外键,你将有一个错误!