Ho risposto a questa domanda nel 2009. A quel tempo in MySQL non esisteva la sintassi per rinominare un indice.
Da allora, MySQL 5.7 ha introdotto un ALTER TABLE RENAME INDEX
sintassi.
http://dev.mysql.com/doc/refman /5.7/en/alter-table.html dice in parte:
Versioni precedenti di MySQL, ad es. 5.6 e precedenti, non supporta la sintassi in ALTER TABLE
per rinominare un indice (o una chiave, che è un sinonimo).
L'unica soluzione era ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
Non esiste ALTER INDEX
comando in MySQL. Puoi solo DROP INDEX
e poi CREATE INDEX
con il nuovo nome.
Per quanto riguarda il tuo aggiornamento sopra:forse la documentazione non è abbastanza precisa. Indipendentemente da ciò, non esiste una sintassi SQL per rinominare un indice.
Un indice è una struttura dati che può essere ricostruita a partire dai dati (infatti si consiglia di ricostruire gli indici periodicamente con OPTIMIZE TABLE
). Ci vuole un po' di tempo, ma è un'operazione banale. Le strutture dei dati degli indici sono separate dai dati della tabella, quindi l'aggiunta o l'eliminazione di un indice non dovrebbe dover toccare i dati della tabella, come dice la documentazione.
Per quanto riguarda il .frm
MySQL non supporta la modifica di .frm
file. Non lo farei per nessun motivo. Hai la garanzia al 100% di corrompere il tuo tavolo e renderlo inutilizzabile.