Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में varchar (अधिकतम) के बराबर?

एक वर्चर की अधिकतम लंबाई MySQL में अधिकतम पंक्ति आकार के अधीन है, जो 64KB है (बीएलओबी की गिनती नहीं):

VARCHAR(65535)

हालांकि, ध्यान दें कि यदि आप एक बहु-बाइट वर्ण सेट का उपयोग करते हैं तो सीमा कम होती है:

VARCHAR(21844) CHARACTER SET utf8

यहां कुछ उदाहरण दिए गए हैं:

अधिकतम पंक्ति आकार 65535 है, लेकिन एक वर्चर में किसी दिए गए स्ट्रिंग की लंबाई को एन्कोड करने के लिए बाइट या दो भी शामिल होते हैं। तो आप वास्तव में अधिकतम पंक्ति आकार का वर्चर घोषित नहीं कर सकते, भले ही वह तालिका में एकमात्र कॉलम हो।

mysql> CREATE TABLE foo ( v VARCHAR(65534) );
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

लेकिन अगर हम लंबाई कम करने की कोशिश करते हैं, तो हम सबसे बड़ी लंबाई पाते हैं जो काम करती है:

mysql> CREATE TABLE foo ( v VARCHAR(65532) );
Query OK, 0 rows affected (0.01 sec)

अब यदि हम टेबल स्तर पर मल्टीबाइट वर्णसेट का उपयोग करने का प्रयास करते हैं, तो हम पाते हैं कि यह प्रत्येक वर्ण को एकाधिक बाइट्स के रूप में गिनता है। UTF8 स्ट्रिंग जरूरी नहीं प्रति स्ट्रिंग एकाधिक बाइट्स का उपयोग करें, लेकिन MySQL यह नहीं मान सकता है कि आप अपने सभी भावी प्रविष्टियों को सिंगल-बाइट वर्णों तक सीमित कर देंगे।

mysql> CREATE TABLE foo ( v VARCHAR(65532) ) CHARSET=utf8;
ERROR 1074 (42000): Column length too big for column 'v' (max = 21845); use BLOB or TEXT instead

पिछली त्रुटि ने हमें जो बताया, उसके बावजूद, InnoDB को अभी भी 21845 की लंबाई पसंद नहीं है।

mysql> CREATE TABLE foo ( v VARCHAR(21845) ) CHARSET=utf8;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

यह सही समझ में आता है, अगर आप उस 21845*3 =65535 की गणना करते हैं, जो वैसे भी काम नहीं करता। जबकि 21844*3 =65532, जो काम करता है।

mysql> CREATE TABLE foo ( v VARCHAR(21844) ) CHARSET=utf8;
Query OK, 0 rows affected (0.32 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में स्ट्रिंग के बाएँ या दाएँ भाग को कैसे लौटाएँ?

  2. MySQL में एक कॉलम अपडेट करें

  3. स्टैक की रचना - MySQL कंटेनरों के डॉकर परिनियोजन को सरल बनाएं

  4. JSON_OBJECTAGG () - MySQL में क्वेरी परिणामों से JSON ऑब्जेक्ट बनाएं

  5. एसक्यूएल अद्वितीय वर्चर केस संवेदनशीलता प्रश्न