Jag svarade på den här frågan 2009. Vid den tiden fanns det ingen syntax i MySQL för att byta namn på ett index.
Sedan dess har MySQL 5.7 introducerat ett ALTER TABLE RENAME INDEX
syntax.
http://dev.mysql.com/doc/refman /5.7/en/alter-table.html säger delvis:
Tidigare versioner av MySQL, t.ex. 5.6 och tidigare, stöder ingen syntax i ALTER TABLE
för att byta namn på ett index (eller nyckel, som är en synonym).
Den enda lösningen var att ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
Det finns ingen ALTER INDEX
kommando i MySQL. Du kan bara DROP INDEX
och sedan CREATE INDEX
med det nya namnet.
Angående din uppdatering ovan:dokumentationen kanske inte är tillräckligt exakt. Oavsett så finns det ingen SQL-syntax för att byta namn på ett index.
Ett index är en datastruktur som kan byggas om från datan (det rekommenderas faktiskt att bygga om index med jämna mellanrum med OPTIMIZE TABLE
). Det tar lite tid, men det är en vanlig operation. Indexdatastrukturer är separata från tabelldata, så att lägga till eller ta bort ett index borde inte behöva röra tabelldata, som det står i dokumentationen.
Angående .frm
fil, MySQL stöder inte redigering av .frm
fil. Jag skulle inte göra det av någon anledning. Du är 100 % garanterad att korrumpera ditt bord och göra det oanvändbart.