Odpowiedziałem na to pytanie w 2009 roku. W tym czasie w MySQL nie było składni umożliwiającej zmianę nazwy indeksu.
Od tego czasu MySQL 5.7 wprowadził ALTER TABLE RENAME INDEX
składnia.
http://dev.mysql.com/doc/refman /5.7/pl/alter-table.html mówi w części:
Wcześniejsze wersje MySQL, m.in. 5.6 i wcześniejsze nie obsługują składni w ALTER TABLE
zmienić nazwę indeksu (lub klucza, który jest synonimem).
Jedynym rozwiązaniem było ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
Nie ma ALTER INDEX
polecenie w MySQL. Możesz tylko DROP INDEX
a następnie CREATE INDEX
z nową nazwą.
Odnośnie twojej aktualizacji powyżej:być może dokumentacja nie jest wystarczająco dokładna. Niezależnie od tego nie ma składni SQL do zmiany nazwy indeksu.
Indeks to struktura danych, którą można odbudować z danych (w rzeczywistości zaleca się okresowe odbudowywanie indeksów za pomocą OPTIMIZE TABLE
). To zajmuje trochę czasu, ale to powszechna operacja. Struktury danych indeksów są oddzielone od danych tabeli, więc dodanie lub upuszczenie indeksu nie powinno mieć wpływu na dane tabeli, jak mówi dokumentacja.
Odnośnie .frm
MySQL nie obsługuje edycji pliku .frm
plik. Nie zrobiłbym tego z jakiegokolwiek powodu. Masz 100% gwarancję, że zniszczysz swój stół i uczynisz go bezużytecznym.