Tôi đã trả lời câu hỏi này vào năm 2009. Tại thời điểm đó, không có cú pháp nào trong MySQL để đổi tên một chỉ mục.
Kể từ đó, MySQL 5.7 đã giới thiệu ALTER TABLE RENAME INDEX
cú pháp.
http://dev.mysql.com/doc/refman /5.7/en/alter-table.html nói một phần:
Các phiên bản trước của MySQL, ví dụ:5.6 trở về trước, không hỗ trợ cú pháp trong ALTER TABLE
để đổi tên một chỉ mục (hoặc khóa, là một từ đồng nghĩa).
Giải pháp duy nhất là ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
Không có ALTER INDEX
lệnh trong MySQL. Bạn chỉ có thể DROP INDEX
và sau đó CREATE INDEX
với tên mới.
Về bản cập nhật của bạn ở trên:có lẽ tài liệu không đủ chính xác. Bất kể, không có cú pháp SQL nào để đổi tên một chỉ mục.
Chỉ mục là một cấu trúc dữ liệu có thể được tạo lại từ dữ liệu (trên thực tế, bạn nên xây dựng lại chỉ mục theo định kỳ với OPTIMIZE TABLE
). Phải mất một chút thời gian, nhưng đó là một hoạt động phổ biến. Cấu trúc dữ liệu chỉ mục tách biệt với dữ liệu bảng, vì vậy việc thêm hoặc bớt chỉ mục không cần phải chạm vào dữ liệu bảng, như tài liệu cho biết.
Về .frm
, MySQL không hỗ trợ chỉnh sửa .frm
tập tin. Tôi sẽ không làm điều đó vì bất kỳ lý do gì. Bạn được đảm bảo 100% về việc làm hỏng bảng của mình và khiến nó không thể sử dụng được.