Не удалось удалить индексированный столбец, ОШИБКА 1025 (HY000): Ошибка при переименовании.. в.. (ошибка: 150)

У меня проблемы с удалением столбца, который проиндексирован. Я действительно не понимаю, что происходит, так как у меня обычно нет проблем с удалением индексов. Когда я пытаюсь удалить столбец или индекс, я получаю следующую ошибку

ERROR 1025 (HY000): Error on rename of './db-name/#sql-135e_9ee6d2' to './db-name/table-name' (errno: 150)

Если я создаю новый индекс в том же столбце, я могу удалить старый индекс, но не новый (я думаю, он просто проверяет, доступен ли индекс). Парень, вы когда-нибудь сталкивались с этой проблемой, если есть какие-либо предложения, как я могу решить эту проблему?

engine: innoDB mysql версия: Ver 14.12 Distrib 5.0.45, для redhat-linux-gnu (x86_64) с использованием readline 5.0

Спасибо за вашу помощь, если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

2 ответа

Решение

У вас есть отношение внешнего ключа к этому индексу, поэтому InnoDB предотвращает удаление этого столбца для обеспечения согласованности. Сначала удалите все внешние ключи, которые ссылаются на этот столбец.

Это происходит потому, что ALTER TABLE действительно работает, создавая копию таблицы, затем переименовывая ее, чтобы убрать старую таблицу и переместить новую таблицу на место. Это, безусловно, одно из менее значимых сообщений об ошибках, которые я видел в MySQL.

http://www.xaprb.com/blog/2006/08/22/mysqls-error-1025-explained/

Это ошибка ссылки на внешний ключ...

Вы можете проверить с помощью следующего утверждения, чтобы увидеть таблицу

ПОКАЗАТЬ ДВИГАТЕЛЬ INNODB STATUS

Другие вопросы по тегам