MySQL Ошибка при удалении индекса (errno 150) - PullRequest
8 голосов
/ 20 сентября 2009

У меня проблема с удалением индекса внешнего ключа, я всегда получаю ту же ошибку

 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 ]

13 голосов
/ 24 января 2011

Есть и другие причины. Например, у меня был уникальный индекс, включающий два отдельных столбца внешнего ключа. Мне пришлось отбросить рассматриваемые внешние ключи, прежде чем я смог отбросить уникальный индекс. (И, очевидно, вы можете добавить внешние ключи позже.)

6 голосов
/ 28 августа 2012

INNODB: это может быть так же просто, как удалить отношение перед удалением индекса.

2 голосов
/ 20 сентября 2009

Согласно этой ссылке ошибка относится к определению поля первичного ключа. Ошибка не в индексе внешнего ключа.

Проверьте первичный ключ для таблицы COMMENTS, чтобы убедиться, что в нем нет ключевого слова UNSIGNED, а внешний ключ COMMENTS.id_user имеет ключевое слово UNSIGNED. Это ключевое слово вызывало проблему - непоследовательный тип поля.

Чтобы исправить, добавьте ключевое слово UNSIGNED в определение первичного ключа для таблицы COMMENTS. Или удалите ключевое слово UNSIGNED из определения внешнего ключа ...

1 голос
/ 23 сентября 2015

Индекс для внешнего ключа в таблице 'user', поэтому Во-первых, попробуйте эту команду:

SHOW CREATE TABLE my_table

Найти имя ограничения, соответствующего индексу по внешнему ключу,

и после этого попробуйте команду:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode

ВНИМАНИЕ: Если вы попытаетесь удалить внешний ключ с именем внешнего ключа, у вас будет ошибка!

...