Ich habe diese Frage 2009 beantwortet. Damals gab es in MySQL keine Syntax, um einen Index umzubenennen.
Seitdem hat MySQL 5.7 einen ALTER TABLE RENAME INDEX
eingeführt Syntax.
http://dev.mysql.com/doc/refman /5.7/en/alter-table.html sagt auszugsweise:
Frühere Versionen von MySQL, z.B. 5.6 und früher unterstützen keine Syntax in ALTER TABLE
um einen Index (oder Schlüssel, was ein Synonym ist) umzubenennen.
Die einzige Lösung war ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
Es gibt keinen ALTER INDEX
Befehl in MySQL. Sie können nur DROP INDEX
und dann CREATE INDEX
mit dem neuen Namen.
In Bezug auf Ihr obiges Update:Vielleicht ist die Dokumentation nicht präzise genug. Unabhängig davon gibt es keine SQL-Syntax, um einen Index umzubenennen.
Ein Index ist eine Datenstruktur, die aus den Daten neu erstellt werden kann (tatsächlich wird empfohlen, Indizes regelmäßig mit OPTIMIZE TABLE
neu zu erstellen ). Es dauert einige Zeit, aber es ist eine alltägliche Operation. Indizes-Datenstrukturen sind von Tabellendaten getrennt, daher sollte das Hinzufügen oder Löschen eines Indexes die Tabellendaten nicht berühren müssen, wie es in der Dokumentation heißt.
Bezüglich der .frm
-Datei unterstützt MySQL die Bearbeitung von .frm
nicht Datei. Ich würde es aus keinem Grund tun. Es ist zu 100 % garantiert, dass Sie Ihre Tabelle beschädigen und unbrauchbar machen.