Ich möchte einen Index umbenennen. Ich habe mir die Dokumentation zur Änderungstabelle angesehen , kann aber die Syntax zum einfachen Umbenennen eines Index nicht herausfinden. Wenn Sie dies über die MySQL-Benutzeroberfläche tun, wird der Index gelöscht und ein neuer erstellt. Während dies funktioniert, möchte ich vermeiden, den gesamten Index neu zu erstellen, nur um den Namen eines Index zu ändern.
[ZUSÄTZLICHE INFORMATION]
In der Dokumentation zur Änderungstabelle wird angegeben
Änderungen, die nur Tabellenmetadaten und keine Tabellendaten ändern, können sofort vorgenommen werden, indem die .frm-Datei der Tabelle geändert wird und der Tabelleninhalt nicht berührt wird. Die folgenden Änderungen sind schnelle Änderungen, die auf diese Weise vorgenommen werden können:
* Renaming a column or index.
Als ich jedoch versuchte, den Index durch Bearbeiten der .frm-Datei (in einer Testdatenbank) und Neustarten des Servers umzubenennen, wurde in der Benutzeroberfläche beim Versuch, die Spalten aufzulisten, und beim Versuch, sie auszuführen, die Meldung "Spalten konnten nicht abgerufen werden" angezeigt Bei einer Abfrage wird der Fehler "Unknown table engine ''" zurückgegeben. Die .frm-Datei enthält viele binäre Inhalte. Gibt es ein gutes Werkzeug zum Bearbeiten der binären Informationen?
Für MySQL 5.7:
ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name
Für ältere MySQL-Versionen:
ALTER TABLE tbl_name DROP INDEX old_index_name, ADD INDEX new_index_name (...)
Siehe http://dev.mysql.com/doc/refman/5.7/en/alter-table.html
quelle
Diese Frage wurde vor langer Zeit gestellt und zuletzt vor über einem halben Jahr aktualisiert. Trotzdem habe ich das Bedürfnis, diesen Tipp hinzuzufügen:
Wenn die indizierte Spalte an anderer Stelle als Fremdschlüssel verwendet wird, kann ein Fehler auftreten. Dies kann helfen:
SET FOREIGN_KEY_CHECKS = 0; ALTER TABLE tbl DROP INDEX index_name; ALTER TABLE tbl ADD INDEX new_index_name (indexed_column); SET FOREIGN_KEY_CHECKS = 1;
Hoffe, jemand findet das nützlich.
quelle
ALTER TABLE tbl ADD INDEX new_index_name (indexed_column), DROP INDEX index_name
Für Oracle 11g ist es (zumindest) so:
ALTER INDEX upper_ix RENAME TO upper_name_ix;
quelle