त्रुटि 1170 (42000):BLOB/TEXT कॉलम 'field_name' बिना कुंजी लंबाई के कुंजी विनिर्देश में उपयोग किया जाता है
त्रुटि इसलिए होती है क्योंकि MySQL किसी BLOB या TEXT कॉलम के केवल पहले N वर्णों को अनुक्रमित कर सकता है। तो त्रुटि मुख्य रूप से तब होती है जब टेक्स्ट या बीएलओबी का कोई फ़ील्ड/कॉलम प्रकार होता है या वे टेक्स्ट या बीएलओबी प्रकार से संबंधित होते हैं जैसे टिनीब्लॉब, मेडियमब्लॉब, लोंगब्लॉब, टिनीटेक्स्ट, मेडियमटेक्स्ट, और लॉन्गटेक्स्ट जिसे आप प्राथमिक कुंजी या इंडेक्स के रूप में बनाने का प्रयास करते हैं। लंबाई मान के बिना पूर्ण BLOB या TEXT के साथ, MySQL स्तंभ की विशिष्टता की गारंटी देने में असमर्थ है क्योंकि यह चर और गतिशील आकार का है। इसलिए, इंडेक्स के रूप में BLOB या TEXT प्रकारों का उपयोग करते समय, N का मान दिया जाना चाहिए ताकि MySQL कुंजी लंबाई निर्धारित कर सके। हालाँकि, MySQL TEXT या BLOB पर सीमा का समर्थन नहीं करता है। TEXT(88) बस काम नहीं करेगा।
जब आप तालिका कॉलम को गैर-पाठ और गैर-ब्लॉब प्रकार जैसे VARCHAR और ENUM से टेक्स्ट या बीएलओबी प्रकार में कनवर्ट करने का प्रयास करते हैं, तो त्रुटि भी पॉप अप हो जाएगी, कॉलम को पहले से ही अद्वितीय बाधाओं या अनुक्रमणिका के रूप में परिभाषित किया गया है। तालिका बदलें SQL आदेश विफल हो जाएगा।
समस्या का समाधान इंडेक्स या अद्वितीय बाधा से टेक्स्ट या बीएलओबी कॉलम को हटाना है, या किसी अन्य फ़ील्ड को प्राथमिक कुंजी के रूप में सेट करना है। यदि आप ऐसा नहीं कर सकते हैं, और टेक्स्ट या बीएलओबी कॉलम पर एक सीमा रखना चाहते हैं, तो VARCHAR प्रकार का उपयोग करने का प्रयास करें और उस पर लंबाई की सीमा रखें। डिफ़ॉल्ट रूप से, VARCHAR अधिकतम 255 वर्णों तक सीमित है और इसकी सीमा को इसकी घोषणा के ठीक बाद एक ब्रैकेट के भीतर स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए, अर्थात VARCHAR (200) इसे केवल 200 वर्णों तक सीमित कर देगा।
कभी-कभी, भले ही आप अपनी तालिका में टेक्स्ट या बीएलओबी संबंधित प्रकार का उपयोग नहीं करते हैं, त्रुटि 1170 भी प्रकट हो सकती है। ऐसा तब होता है जब आप VARCHAR कॉलम को प्राथमिक कुंजी के रूप में निर्दिष्ट करते हैं, लेकिन गलत तरीके से इसकी लंबाई या वर्ण आकार सेट करते हैं। VARCHAR केवल 256 वर्णों को स्वीकार कर सकता है, इसलिए VARCHAR (512) जैसी कोई भी चीज़ MySQL को VARCHAR (512) को एक SMALLTEXT डेटाटाइप में ऑटो-कन्वर्ट करने के लिए बाध्य करेगी, जो बाद में मुख्य लंबाई पर त्रुटि 1170 के साथ विफल हो जाती है यदि कॉलम को प्राथमिक के रूप में उपयोग किया जाता है कुंजी या अद्वितीय या गैर-अद्वितीय अनुक्रमणिका। इस समस्या को हल करने के लिए, VARCHAR फ़ील्ड के आकार के रूप में 256 से कम का आंकड़ा निर्दिष्ट करें।