मैंने इस सवाल का जवाब 2009 में दिया था। उस समय MySQL में इंडेक्स का नाम बदलने के लिए कोई सिंटैक्स नहीं था।
तब से, MySQL 5.7 ने एक ALTER TABLE RENAME INDEX
introduced पेश किया वाक्य - विन्यास।
http://dev.mysql.com/doc/refman /5.7/hi/alter-table.html भाग में कहते हैं:
MySQL के पुराने संस्करण, उदा. 5.6 और इससे पहले, ALTER TABLE
एक इंडेक्स (या कुंजी, जो एक समानार्थी है) का नाम बदलने के लिए।
एकमात्र समाधान था ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
।
कोई ALTER INDEX
नहीं है MySQL में कमांड। आप केवल DROP INDEX
कर सकते हैं
और फिर CREATE INDEX
नए नाम के साथ।
उपरोक्त आपके अपडेट के संबंध में:शायद दस्तावेज़ीकरण पर्याप्त सटीक नहीं है। भले ही, इंडेक्स का नाम बदलने के लिए कोई SQL सिंटैक्स नहीं है।
एक इंडेक्स एक डेटा संरचना है जिसे डेटा से फिर से बनाया जा सकता है (वास्तव में यह इंडेक्स को समय-समय पर OPTIMIZE TABLE
के साथ फिर से बनाने की सिफारिश की जाती है। ) इसमें कुछ समय लगता है, लेकिन यह एक सामान्य ऑपरेशन है। अनुक्रमणिका डेटा संरचनाएं तालिका डेटा से अलग होती हैं, इसलिए किसी अनुक्रमणिका को जोड़ने या छोड़ने के लिए तालिका डेटा को स्पर्श करने की आवश्यकता नहीं होनी चाहिए, जैसा कि दस्तावेज़ीकरण कहता है।
.frm
. के संबंध में फ़ाइल, MySQL .frm
के संपादन का समर्थन नहीं करता है फ़ाइल। मैं इसे किसी भी कारण से नहीं करूँगा। आपको 100% गारंटी है कि आप अपनी टेबल को खराब कर देंगे और उसे अनुपयोगी बना देंगे।