टेबल और इंडेक्स में परिवर्तन इस बात को संदर्भित करते हैं कि MySQL डेटा प्रकार और कैरेक्टर सेट को कैसे संभालता है। आवश्यक टेबल मरम्मत या अपग्रेड CHECK TABLE, mysqlcheck, या mysql_upgrade द्वारा रिपोर्ट किए जाते हैं।
टेबल रीबिल्ड करें
टेबल रीबिल्ड करने के कई तरीके हैं। उनमें से कुछ नीचे सूचीबद्ध हैं:
डंप और रीलोड मेथड
ALTER TABLE मेथड
REPAIR TABLE मेथड
आइए उनमें से प्रत्येक को संक्षेप में समझते हैं:
डंप और रीलोड मेथड
यदि टेबल को इसलिए रीबिल्ड किया जा रहा है क्योंकि MySQL के विभिन्न संस्करण बाइनरी (इन-प्लेस) अपग्रेड या डाउनलोड के बाद टेबल को संभाल नहीं सकते, तो इस डंप और रीलोड मेथड का उपयोग करने की आवश्यकता है।
एक टेबल को डंप करके और रीलोड करके रीबिल्ड किया जा सकता है। यह 'mysqldump' का उपयोग करके एक डंप फाइल बनाकर और mysql को फाइल रीलोड करने की अनुमति देकर किया जा सकता है। यह नीचे दिए गए कमांड का उपयोग करके किया जा सकता है:
mysqldump db_name t1 > dump.sql mysql db_name < dump.sql
यदि एक ही डेटाबेस में सभी टेबल को रीबिल्ड करना है, तो किसी टेबल नाम का उपयोग किए बिना डेटाबेस का नाम निर्दिष्ट किया जा सकता है। यह नीचे दिए गए कमांड का उपयोग करके किया जा सकता है:
mysqldump db_name > dump.sql mysql db_name < dump.sql
यदि सभी डेटाबेस में सभी टेबल को रीबिल्ड करना है, तो '--all-databases' विकल्प का उपयोग करना होगा। यह नीचे दिए गए कमांड का उपयोग करके किया जा सकता है:
mysqldump --all-databases > dump.sql mysql < dump.sql
ALTER TABLE मेथड
यदि ALTER TABLE मेथड का उपयोग करके टेबल को रीबिल्ड करने की आवश्यकता है, तो एक "नल" परिवर्तन का उपयोग किया जा सकता है। एक ALTER TABLE स्टेटमेंट का उपयोग किया जा सकता है जो टेबल को बदलता है ताकि यह स्टोरेज इंजन का उपयोग कर सके। आइए एक उदाहरण लें: मान लीजिए TblName एक InnoDB टेबल है, तो नीचे दिए गए स्टेटमेंट का उपयोग टेबल को रीबिल्ड करने के लिए किया जा सकता है:
ALTER TABLE TblName ENGINE = InnoDB;
REPAIR TABLE मेथड
REPAIR TABLE मेथड केवल MyISAM, ARCHIVE, और CSV टेबल पर लागू होता है। यदि टेबल चेकिंग ऑपरेशन सुझाव देता है कि फाइल करप्ट हो गई है या अपग्रेड आवश्यक है, तो REPAIR TABLE स्टेटमेंट का उपयोग किया जा सकता है। आइए एक उदाहरण लें: MyISAM टेबल को रिपेयर करने के लिए, नीचे दिए गए स्टेटमेंट को निष्पादित किया जा सकता है:
REPAIR TABLE TblName;
mysqlcheck --repair REPAIR TABLE स्टेटमेंट तक कमांड-लाइन एक्सेस प्रदान करता है। यह टेबल रिपेयर करने का एक अधिक सुविधाजनक साधन हो सकता है क्योंकि आप किसी विशिष्ट डेटाबेस में टेबल रिपेयर करने के लिए --databases का उपयोग कर सकते हैं या सभी डेटाबेस में सभी टेबल रिपेयर करने के लिए --all-databases विकल्प का उपयोग कर सकते हैं। यह नीचे दिए गए कमांड का उपयोग करके किया जा सकता है:
mysqlcheck --repair --databases db_name ... mysqlcheck --repair --all-databases