J'ai répondu à cette question en 2009. A cette époque, il n'y avait pas de syntaxe dans MySQL pour renommer un index.
Depuis, MySQL 5.7 a introduit un ALTER TABLE RENAME INDEX
syntaxe.
http://dev.mysql.com/doc/refman /5.7/fr/alter-table.html dit en partie :
Les versions antérieures de MySQL, par ex. 5.6 et versions antérieures, ne prennent en charge aucune syntaxe dans ALTER TABLE
pour renommer un index (ou une clé, qui est un synonyme).
La seule solution était de ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
Il n'y a pas d'ALTER INDEX
commande dans MySQL. Vous pouvez uniquement DROP INDEX
puis CREATE INDEX
avec le nouveau nom.
Concernant votre mise à jour ci-dessus :peut-être que la documentation n'est pas assez précise. Quoi qu'il en soit, il n'y a pas de syntaxe SQL pour renommer un index.
Un index est une structure de données qui peut être reconstruite à partir des données (en fait, il est recommandé de reconstruire les index périodiquement avec OPTIMIZE TABLE
). Cela prend du temps, mais c'est une opération banale. Les structures de données d'index sont séparées des données de table, donc l'ajout ou la suppression d'un index ne devrait pas avoir besoin de toucher les données de la table, comme le dit la documentation.
Concernant le .frm
fichier, MySQL ne prend pas en charge la modification du .frm
dossier. Je ne le ferais sous aucun prétexte. Vous êtes assuré à 100 % de corrompre votre table et de la rendre inutilisable.