दिलचस्प पोस्ट
क्या इस memcpy कार्यान्वयन में याद आ रही है / उप इष्टतम? पीएचपी: एक छवि फ़ाइल में एक ब्लॉब परिवर्तित करें स्विफ्ट आईओएस 8 एप के लिए उद्देश्य सी फ्रेमवर्क से कनेक्ट करें (पार्स फ़्रेमवर्क) फ़ायरफ़ॉक्स में सामग्री यूआरएल काम नहीं कर रहा है जावा EE कंटेनर में धागे क्यों पैदा हो रहे हैं निराश? एंड्रॉइड में पावर बटन को ओवरराइड करना सी # विंडोज फॉर्म एप्लीकेशन – जीयूआई को दूसरे थ्रेड और क्लास से अपडेट करना है? प्रक्रिया में AppDomains सूची JQuery का उपयोग कर HTML तत्वों के बीच सफेद स्थान और लाइन ब्रेक निकालें UIWebView का उपयोग करके HTML कोड से उद्देश्य सी कोड में विधि डालें जावा के साथ मौजूदा खुली खिड़कियां / प्रक्रिया की सूची कैसे प्राप्त करें? स्ट्रीम से एक बाइट सरणी बनाना System.out को स्थिर फाइनल के रूप में घोषित किया गया है और शून्य के साथ आरंभ किया गया है? स्पर्श पर सर्कल खींचें एंड्रॉइड पर मैं कैसे 3 जी / डाटा प्रोग्रामेटिक रूप से बंद कर सकता हूं?

Mysql :: त्रुटि: निर्दिष्ट कुंजी बहुत लंबी थी; अधिकतम कुंजी लंबाई 1000 बाइट्स है

script/generate acts_as_taggable_on_migration rake db:migrate 

का कारण बनता है

 Mysql::Error: Specified key was too long; max key length is 1000 bytes: CREATE INDEX `index_taggings_on_taggable_id_and_taggable_type_and_context` ON `taggings` (`taggable_id`, `taggable_type`, `context`) 

मुझे क्या करना चाहिए?

यहां मेरा डेटाबेस एन्कोडिंग है:

 mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | +--------------------------+--------+ 7 rows in set (0.00 sec) 

Solutions Collecting From Web of "Mysql :: त्रुटि: निर्दिष्ट कुंजी बहुत लंबी थी; अधिकतम कुंजी लंबाई 1000 बाइट्स है"

यह केवल एक MySQL समस्या है –

माईएसक्यूएल के पास अलग-अलग इंजन हैं- मायसाम, इंनोडीबी, मेमोरी …

MySQL के स्थान की मात्रा पर अलग-अलग सीमाएं हैं, जिनका उपयोग आप स्तंभ (नों) पर अनुक्रमित को परिभाषित करने के लिए कर सकते हैं – मैसैम के लिए यह 1,000 बाइट्स है; आईएनडीडीबी के लिए यह 767 है और उन स्तंभों का डेटा प्रकार – VARCHAR के लिए, यह 3x है, इसलिए किसी VARCHAR (100) पर एक इंडेक्स 300 बाइट्स लेता है (क्योंकि 100 वर्ण * 3 = 300)।

जब आप छत के मूल्य को दबाते हैं तो कुछ अनुक्रमण को समायोजित करने के लिए, आप स्तंभ डेटा प्रकार के अंश के संबंध में सूचकांक को परिभाषित कर सकते हैं:

 CREATE INDEX example_idx ON YOUR_TABLE(your_column(50)) 

यह मानते हुए कि your_column VARCHAR (100) है, उपरोक्त उदाहरण में सूचक केवल पहले 50 वर्णों पर होगा। 50 वें वर्ण के बाहर डेटा की खोज के लिए सूचकांक का उपयोग करने में सक्षम नहीं होगा।

यदि यह त्रुटि माइग्रेशन जैसी कुछ प्रक्रिया में होती है, तो इसे MySQL (* .i) की कॉन्फ़िग फाइल बदलकर हल किया जा सकता है

 default-storage-engine=InnoDB 

मुझे लगता है कि आपके खेतों में से एक 1000 से अधिक वर्णों के साथ एक वर्चार है जैसे संदर्भ?

एक सूचकांक के अर्थ के बारे में सोचो। यह एक पंक्ति तक त्वरित पहुंच है जब आपके अनुक्रमित फ़ील्ड उस क्षेत्र के भीतर हो जहां खंड। यदि एक सूचकांक लंबे समय तक है (1000 से अधिक बाइट्स के मामले में), यह सूचकांक का उपयोग करने के लिए कोई मतलब नहीं है, क्योंकि यह पूर्ण तालिका स्कैन के साथ पूर्ण तालिका तक पहुंचने की तुलना में धीमी है।

मैं सूचकांक को छोटा करने का सुझाव देता हूं, जैसे कि टैगगैबल_आईड और टैगगैबल_प्रकार, यदि ये दोनों एक बार कम होते हैं

चीयर्स – गेरहार्ड

यह एक बग है जो यहां बताया गया था: http://bugs.mysql.com/bug.php?id=4541

यदि आपने इस पोस्ट पर सभी उत्तरों की कोशिश की है और अभी भी त्रुटि प्राप्त की है, तो आप इस कमान को अपनी SQL क्वेरी विंडो पर चलाने का प्रयास कर सकते हैं।

 set GLOBAL storage_engine='InnoDb'; 

मुझे यह समस्या थी, इसलिए मेरा समाधान यह था:

 alter table robs_temp.missing_email change email email varchar(300); ALTER TABLE robs_temp.missing_email add primary key (email); -- Now it works. 

विकिपीडिया के अनुसार वैध ईमेल 256 वर्णों से अधिक नहीं हो सकते। शायद आपके डेटा में कुछ ऊपरी सीमाएं हैं