Respondi a esta pergunta em 2009. Naquela época não havia sintaxe no MySQL para renomear um índice.
Desde então, o MySQL 5.7 introduziu um
ALTER TABLE RENAME INDEX
sintaxe. http://dev.mysql.com/doc/refman /5.7/en/alter-table.html diz em parte:
Versões anteriores do MySQL, por exemplo, 5.6 e anteriores, não suportam sintaxe em
ALTER TABLE
para renomear um índice (ou chave, que é um sinônimo). A única solução era
ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
. Não há
ALTER INDEX
comando no MySQL. Você só pode DROP INDEX
e então CREATE INDEX
com o novo nome. Em relação à sua atualização acima:talvez a documentação não seja precisa o suficiente. Independentemente disso, não há sintaxe SQL para renomear um índice.
Um índice é uma estrutura de dados que pode ser reconstruída a partir dos dados (na verdade, é recomendado reconstruir os índices periodicamente com
OPTIMIZE TABLE
). Leva algum tempo, mas é uma operação comum. As estruturas de dados de índices são separadas dos dados da tabela, portanto, adicionar ou descartar um índice não deve afetar os dados da tabela, como diz a documentação. Em relação ao
.frm
arquivo, o MySQL não suporta a edição do .frm
Arquivo. Eu não faria isso por qualquer motivo. Você está 100% garantido para corromper sua tabela e torná-la inutilizável.