Na tuto otázku jsem odpověděl v roce 2009. V té době v MySQL neexistovala žádná syntaxe pro přejmenování indexu.
Od té doby MySQL 5.7 zavedlo ALTER TABLE RENAME INDEX
syntax.
http://dev.mysql.com/doc/refman /5.7/cs/alter-table.html říká částečně:
Starší verze MySQL, např. 5.6 a starší, nepodporují žádnou syntaxi v ALTER TABLE
přejmenovat index (nebo klíč, což je synonymum).
Jediným řešením bylo ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
Neexistuje žádný ALTER INDEX
příkaz v MySQL. Můžete pouze DROP INDEX
a poté CREATE INDEX
s novým názvem.
Pokud jde o vaši aktualizaci výše:dokumentace možná není dostatečně přesná. Bez ohledu na to neexistuje žádná syntaxe SQL pro přejmenování indexu.
Index je datová struktura, kterou lze z dat znovu sestavit (ve skutečnosti se doporučuje indexy pravidelně obnovovat pomocí OPTIMIZE TABLE
). Chvíli to trvá, ale je to běžná operace. Datové struktury indexů jsou oddělené od dat tabulky, takže přidání nebo odstranění indexu by se nemělo dotknout dat tabulky, jak uvádí dokumentace.
Pokud jde o .frm
MySQL nepodporuje úpravy .frm
soubor. Neudělal bych to z žádného důvodu. Máte 100% záruku, že vaši tabulku poškodíte a učiníte nepoužitelnou.