"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 बाइट्स | छोटे-मध्यम स्ट्रिंग, इंडेक्सेबल |
| TEXT | 65,535 कैरेक्टर | बड़े टेक्स्ट, फुल-टेक्स्ट सर्च |
| LONGTEXT | 4,294,967,295 कैरेक्टर | बहुत बड़े डॉक्यूमेंट |
बचाव के उपाय:
- आवश्यक लंबाई का अनुमान लगाकर कॉलम परिभाषित करें
- एप्लीकेशन लेवल पर इनपुट वैलिडेशन रखें
- सख्त SQL मोड (
STRICT_TRANS_TABLES) सक्षम रखें ताकि साइलेंट ट्रंकेशन न हो