Respondí esta pregunta en 2009. En ese momento no había sintaxis en MySQL para cambiar el nombre de un índice.
Desde entonces, MySQL 5.7 introdujo un ALTER TABLE RENAME INDEX
sintaxis.
http://dev.mysql.com/doc/refman /5.7/es/alter-table.html dice en parte:
Versiones anteriores de MySQL, p. 5.6 y anteriores, no admite sintaxis en ALTER TABLE
para cambiar el nombre de un índice (o clave, que es un sinónimo).
La única solución era ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
No hay ALTER INDEX
Comando en MySQL. Solo puede DROP INDEX
y luego CREATE INDEX
con el nuevo nombre.
Con respecto a su actualización anterior:quizás la documentación no sea lo suficientemente precisa. Independientemente, no hay sintaxis SQL para cambiar el nombre de un índice.
Un índice es una estructura de datos que se puede reconstruir a partir de los datos (de hecho, se recomienda reconstruir los índices periódicamente con OPTIMIZE TABLE
). Lleva algo de tiempo, pero es una operación común. Las estructuras de datos de los índices están separadas de los datos de la tabla, por lo que agregar o eliminar un índice no debería afectar los datos de la tabla, como dice la documentación.
Con respecto al .frm
MySQL no admite la edición de .frm
expediente. Yo no lo haría por ningún motivo. Está 100 % garantizado de corromper su tabla y dejarla inutilizable.