Я хочу переименовать индекс. Я просмотрел документацию по изменению таблицы , но не могу понять синтаксис, чтобы просто переименовать индекс. При выполнении этого через графический интерфейс MySQL он удаляет индекс и создает новый. Хотя это работает, я бы не хотел перестраивать весь индекс только для изменения имени индекса.
[ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ]
В документации по таблице изменений указано
Изменения, которые изменяют только метаданные таблицы, но не данные таблицы, могут быть сделаны немедленно, изменив файл .frm таблицы и не касаясь содержимого таблицы. Следующие изменения - это быстрые изменения, которые можно сделать таким образом:
* Renaming a column or index.
Однако, когда я попытался переименовать индекс, отредактировав файл .frm (в тестовой базе данных) и перезапустив сервер, теперь в пользовательском интерфейсе появляется сообщение «Не удалось получить столбцы» при попытке перечислить столбцы и при попытке запустить запрос, он возвращает ошибку "Неизвестный табличный движок" "". В файле .frm много двоичного содержимого. Есть ли хороший инструмент для редактирования двоичной информации.
Для MySQL 5.7:
ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name
Для более старых версий MySQL:
ALTER TABLE tbl_name DROP INDEX old_index_name, ADD INDEX new_index_name (...)
См. Http://dev.mysql.com/doc/refman/5.7/en/alter-table.html
источник
Этот вопрос был задан много лет назад, и последний раз обновлялся более полугода назад. Тем не менее, я чувствую необходимость добавить этот совет:
Если индексированный столбец используется в другом месте в качестве внешнего ключа, вы можете столкнуться с ошибкой, связанной с этим. Это может помочь:
SET FOREIGN_KEY_CHECKS = 0; ALTER TABLE tbl DROP INDEX index_name; ALTER TABLE tbl ADD INDEX new_index_name (indexed_column); SET FOREIGN_KEY_CHECKS = 1;
Надеюсь, кто-то сочтет это полезным.
источник
ALTER TABLE tbl ADD INDEX new_index_name (indexed_column), DROP INDEX index_name