我在2009年回答了这个问题。当时MySQL没有语法重命名索引。
从那时起,MySQL 5.7引入了一个ALTER TABLE RENAME INDEX语法。
RENAME INDEX old_index_name TO new_index_name renames an index. This is a MySQL extension to standard SQL. The content of the table remains unchanged. old_index_name must be the name of an existing index in the table that is not dropped by the same ALTER TABLE statement. new_index_name is the new index name, which cannot duplicate the name of an index in the resulting table after changes have been applied. Neither index name can be PRIMARY.
早期版本的MySQL,例如。 5.6及更早版本,在ALTER TABLE中不支持重命名索引(或键,它是同义词)的语法。
唯一的解决方案是ALTER TABLE DROP KEY oldkeyname,ADD KEY newkeyname(…)。
在MySQL中没有ALTER INDEX命令。您只能使用新名称DROP INDEX和CREATE INDEX。
关于你的更新:也许文档不够精确。无论如何,没有SQL语法来重命名索引。
索引是可以从数据重建的数据结构(实际上,建议使用OPTIMIZE TABLE定期重建索引)。这需要一些时间,但它是一个常见的操作。索引数据结构与表数据是分开的,所以添加或删除索引不需要触及表数据,如文档所述。
关于.frm文件,MySQL不支持编辑.frm文件。我不会为任何原因。您100%保证损坏您的表,使其不可用。