5.0.3 से पहले का MySQL संस्करण 255 वर्णों को संग्रहीत करने में सक्षम था, लेकिन संस्करण 5.0.3 से, यह 65,535 वर्णों को संग्रहीत करने में सक्षम है।
MySQL आधिकारिक दस्तावेज बताता है -
MySQL 5.0.3 और बाद में VARCHAR की प्रभावी अधिकतम लंबाई अधिकतम पंक्ति आकार (65,535 बाइट्स, जो सभी स्तंभों के बीच साझा की जाती है) और उपयोग किए गए वर्ण सेट के अधीन है। उदाहरण के लिए, utf8 वर्णों को प्रति वर्ण तीन बाइट्स की आवश्यकता हो सकती है, इसलिए utf8 वर्ण सेट का उपयोग करने वाले VARCHAR कॉलम को अधिकतम 21,844 वर्ण घोषित किया जा सकता है।
ध्यान रखें कि अधिकतम पंक्ति आकार की सीमा 65,535 बाइट्स है। यह बताता है कि सभी स्तंभों सहित यह 65,535 बाइट्स से अधिक नहीं होना चाहिए।
आइए देखें कि इसका उल्लंघन होने पर क्या होता है -
यहां दो स्तंभों वाली एक तालिका है, "एक" वर्चर जिसकी लंबाई 32,765 है और "दो" 32766 है।
लंबाई =32765+2 + 32766 + 2 =65535।
CREATE TABLE IF NOT EXISTS `mytable` ( `one` varchar(32765) NOT NULL, `two` varchar(32766) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
अब हम कॉलम की लंबाई बढ़ाते हैं -
CREATE TABLE IF NOT EXISTS `mytable` ( `one` varchar(32767) NOT NULL, `two` varchar(32770) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ऊपर निम्न त्रुटि देता है -
#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
उपरोक्त में ही कहा गया है कि -
The maximum row size is 65,535 bytes. If it exceeds, an error will be visible.