MySQL Ошибка при удалении индекса (errno 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
4 ответа
По этой ссылке ошибка относится к определению поля первичного ключа. Ошибка не в индексе внешнего ключа.
Проверьте первичный ключ для COMMENTS
стол, чтобы убедиться, что он не имеет UNSIGNED
Ключевое слово в то время как COMMENTS.id_user
внешний ключ имел ключевое слово UNSIGNED. Это ключевое слово вызывало проблему - непоследовательный тип поля.
Чтобы исправить, добавьте UNSIGNED
Ключевое слово для определения первичного ключа для COMMENTS
Таблица. Или удалите UNSIGNED
ключевое слово из определения внешнего ключа...
Есть и другие причины. Например, у меня был уникальный индекс, включающий два отдельных столбца внешнего ключа. Мне пришлось отбросить рассматриваемые внешние ключи, прежде чем я смог отбросить уникальный индекс. (И, очевидно, вы можете добавить внешние ключи позже.)
INNODB: это может быть так же просто, как удалить отношение перед удалением индекса.
Индекс предназначен для внешнего ключа в таблице 'user', поэтому сначала попробуйте эту команду:
SHOW CREATE TABLE my_table
Найти имя ограничения, соответствующего индексу по внешнему ключу,
и после этого попробуйте команду:
ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode
ВНИМАНИЕ: Если вы попытаетесь удалить внешний ключ с именем внешнего ключа, у вас будет ошибка!