Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL "Data too long for column" एरर: कारण और समाधान

"Data too long for column" एरर को समझना और ठीक करना

एरर का अर्थ

यह एरर (Error 1406, SQL State 22001) तब आता है जब आप किसी कॉलम में उसकी परिभाषित क्षमता से अधिक डेटा डालने का प्रयास करते हैं।

उदाहरण: VARCHAR(6) कॉलम में 7+ कैरेक्टर डालने पर यह एरर आएगा।

एरर पुनरुत्पादन

1. छोटे VARCHAR के साथ टेबल बनाएं:

mysql> CREATE TABLE DataToolongDemo (
    -> Name VARCHAR(10)
    -> ); 
Query OK, 0 rows affected (0.55 sec)

2. 10 से अधिक कैरेक्टर डालने का प्रयास:

mysql> INSERT INTO DataToolongDemo VALUES('Carol Taylor'); 
ERROR 1406 (22001): Data too long for column 'Name' at row 1

"Carol Taylor" 12 कैरेक्टर का है (स्पेस सहित), लेकिन कॉलम केवल 10 कैरेक्टर स्वीकार करता है।

समाधान: कॉलम डेटा टाइप बदलें

विकल्प 1: LONGTEXT में बदलें (असीमित लंबाई के लिए):

mysql> ALTER TABLE DataToolongDemo CHANGE Name Name LONGTEXT; 
Query OK, 0 rows affected (2.22 sec) 
Records: 0 Duplicates: 0 Warnings: 0

विकल्प 2: बड़ा VARCHAR सेट करें:

ALTER TABLE DataToolongDemo MODIFY Name VARCHAR(255);

विकल्प 3: TEXT टाइप उपयोग करें:

ALTER TABLE DataToolongDemo MODIFY Name TEXT;

सुधार के बाद डालना:

mysql> INSERT INTO DataToolongDemo VALUES('Carol Taylor'); 
Query OK, 1 row affected (0.11 sec)

वेरिफाई करें:

mysql> SELECT * FROM DataToolongDemo;
+--------------+ 
| Name         | 
+--------------+ 
| Carol Taylor | 
+--------------+ 
1 row in set (0.00 sec)

MySQL स्ट्रिंग डेटा टाइप तुलना:

टाइपअधिकतम लंबाईउपयोग केस
VARCHAR(n)65,535 बाइट्सछोटे-मध्यम स्ट्रिंग, इंडेक्सेबल
TEXT65,535 कैरेक्टरबड़े टेक्स्ट, फुल-टेक्स्ट सर्च
LONGTEXT4,294,967,295 कैरेक्टरबहुत बड़े डॉक्यूमेंट

बचाव के उपाय:

  • आवश्यक लंबाई का अनुमान लगाकर कॉलम परिभाषित करें
  • एप्लीकेशन लेवल पर इनपुट वैलिडेशन रखें
  • सख्त SQL मोड (STRICT_TRANS_TABLES) सक्षम रखें ताकि साइलेंट ट्रंकेशन न हो
  1. MySQL ERROR 1406 ठीक करें:  Data too long for column  लेकिन ऐसा नहीं होना चाहिए? MySQL ERROR 1406 ठीक करें: "Data too long for column" लेकिन ऐसा नहीं होना चाहिए?

    कारण और समाधान यह त्रुटि तब होती है जब आप किसी कॉलम में उसकी अनुमत सीमा से बड़ा डेटा डालने का प्रयास करते हैं। एक सामान्य कारण: BIT डेटा प्रकार के कॉलम में स्ट्रिंग (1 या 0) डालना बजाय बिट लिटरल के। BIT कॉलम के लिए सही सिंटैक्स -- सही: b प्रीफिक्स के साथ बिट लिटरल anyBitColumnName = b1 -- या b0

  1. - MySQL तालिका के कॉलम का डेटा प्रकार कैसे बदलें?

    MySQL में ALTER TABLE ... MODIFY कमांड का उपयोग करके आप किसी मौजूदा कॉलम का डेटा प्रकार बदल सकते हैं। यह स्कीमा विकास, डेटा प्रकार सुधार, या भंडारण अनुकूलन के लिए आवश्यक है। उदाहरण तालिका बनाना CREATE TABLE DemoTable ( StudentId VARCHAR(200) NOT NULL, StudentName VARCHAR(20), StudentAg

  1. Windows में MySQL तालिका डेटा कहाँ संग्रहीत होता है? Windows में MySQL तालिका डेटा कहाँ संग्रहीत होता है?

    Windows में MySQL तालिका डेटा की डिफ़ॉल्ट संग्रहण स्थान जानने के लिए @@datadir सिस्टम वेरिएबल या SHOW VARIABLES कमांड का उपयोग करें। विधि 1: @@datadir वेरिएबल SELECT @@datadir; आउटपुट: +---------------------------------------------+ | @@datadir | +----------------