मैं अपनी मैकबुक पर (परीक्षण के लिए) एक MySQL सर्वर चला रहा हूं। होमब्रे से संस्करण 5.6.20 है। मैंने "रो आकार बहुत बड़ी" त्रुटियों में भागना शुरू कर दिया, और मैं इसे इस परीक्षण मामले में कम करने में सक्षम रहा हूं। तालिका:
mysql> describe test;
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| stuff | longtext | YES | | NULL | |
+-------+----------+------+-----+---------+----------------+
तालिका स्थिति:
mysql> show table status where Name = 'test';
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| test | InnoDB | 10 | Compact | 1 | 16384 | 16384 | 0 | 0 | 5242880 | 2 | 2014-08-28 23:51:12 | NULL | NULL | utf8_general_ci | NULL | | |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
जब मैं तालिका में एक पंक्ति सम्मिलित करने का प्रयास करता हूं, तो वह त्रुटि होती है जहां stuff
कॉलम में 5033932 बाइट्स होते हैं।
mysql> select length(stuff) from test;
+---------------+
| length(stuff) |
+---------------+
| 5033932 |
+---------------+
mysql> update test set stuff = concat(stuff, 'a');
ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
मैंने इस त्रुटि के लिए चारों ओर खोजा है, अधिकांश उत्तरों में बहुत अधिक स्तंभ शामिल हैं, और प्रत्येक में 768 बाइट्स इनलाइन संग्रहीत हैं। जैसा कि आप देख सकते हैं, मेरे लिए ऐसा नहीं है। इसके अलावा, संख्या ५०३३ ९ ३२ तालिका में मेरे पास मौजूद स्तंभों की संख्या की परवाह किए बिना बनी हुई है। मेरे मूल आवेदन में, पांच कॉलम थे, और अपडेट तब भी विफल रहे जब कॉलम का आकार 5033932 से अधिक हो गया।
मैंने लोगों को पंक्ति स्वरूपों को स्विच करके समस्या को हल करने के लिए भी देखा है, जिसे मैं थोड़ा सा प्रयास करूंगा, लेकिन मैं यह समझना चाहूंगा कि इस त्रुटि का कारण क्या है।
अग्रिम में धन्यवाद!