我遇到了删除外键索引的问题,我总是得到同样的错误
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版本
答案 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
警告:如果您尝试使用外键名称删除外键,则会出错!