सवाल serverfault पर पूछा गया है भी।
<ब्लॉकक्वॉट>आप इस लेख पर एक नज़र डालना चाह सकते हैं जो MySQL रो साइज के बारे में बहुत कुछ बताता है। यह ध्यान रखना महत्वपूर्ण है कि यदि आप टेक्स्ट या बीएलओबी फ़ील्ड का उपयोग करते हैं, तो भी आपकी पंक्ति का आकार 8K (InnoDB के लिए सीमा) से अधिक हो सकता है क्योंकि यह पृष्ठ में प्रत्येक फ़ील्ड इनलाइन के लिए पहले 768 बाइट्स संग्रहीत करता है।
इसे ठीक करने का सबसे आसान तरीका Barracuda फ़ाइल स्वरूप का उपयोग करना है InnoDB के साथ। यह मूल रूप से पहले 768 बाइट्स को संग्रहीत करने के बजाय केवल 20 बाइट पॉइंटर को टेक्स्ट डेटा में संग्रहीत करके समस्या से पूरी तरह छुटकारा दिलाता है।
ओपी के लिए काम करने वाली विधि थी:
-
निम्नलिखित को
my.cnf
में जोड़ें[mysqld]
. के अंतर्गत फ़ाइल अनुभाग।innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
उपयोग करने के लिए तालिकाROW_FORMAT=COMPRESSED
।ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
एक संभावना है कि उपरोक्त अभी भी आपकी समस्याओं का समाधान नहीं करता है। यह एक ज्ञात (और सत्यापित) बग
है InnoDB . के साथ इंजन, और अभी के लिए एक अस्थायी सुधार MyISAM . पर वापस आना है अस्थायी भंडारण के रूप में इंजन। तो, आपके my.cnf
. में फ़ाइल:
internal_tmp_disk_storage_engine=MyISAM