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