/ / MySQL अद्वितीय अनुक्रमणिका एक निश्चित उमलॉट पर काम नहीं करती है - mysql, अनुक्रमण, mysql-error-1062

MySQL अद्वितीय अनुक्रमणिका एक निश्चित उमलॉट पर काम नहीं करती है - mysql, अनुक्रमण, mysql-error-1062

मेरे पास एक उपयोगकर्ता तालिका है जिसमें एक कॉलम है"उपनाम" कहा जाता है, utf-8 एन्कोडेड, वर्कर (20), तालिका InnoDB में है। वहां "दो रिकॉर्ड हैं जिनके पास एक उपनाम =" गुननी "और दूसरा उपनाम =" गुनी "है। जब मैंने इस कॉलम पर एक अनन्य अनुक्रमणिका लागू करने का प्रयास किया, तो mysql ने मुझे यह त्रुटि दी:

लाइन 263 पर ERROR 1062 (23000): कुंजी 2 के लिए डुप्लिकेट प्रविष्टि "gunni"

मैंने वहां डेटा की जांच की "केवल एक रिकॉर्ड है जिसका नाम" गुननी "है, और यदि मैं कुछ और चीज़ों के लिए" गुनी "रिकॉर्ड बदलता हूं तो फिर अनन्य अनुक्रमणिका लागू करें, सब कुछ ठीक काम करता है।

कैसे "गुनी" और "गुननी" डुप्लिकेट हो जाते हैं? उनके लिए हेक्स मान यहां दिए गए हैं, मुझे यह mysql के हेक्स () फ़ंक्शन के साथ मिलता है:

गुनी -> 67756E6E69

गुनी -> 67 सी 3 बीसी 6 ई 6 ई 6 9

वे स्पष्ट रूप से अलग हैं। Mysql इन 2 के समान कैसे व्यवहार करता है? या क्या ऐसा कुछ है जो मुझे अद्वितीय इंडेक्स के बारे में नहीं पता? या यहां तक ​​कि, यह एक mysql बग हो सकता है?

उत्तर:

उत्तर № 1 के लिए 7

यह आपके द्वारा उपयोग किए जा रहे संयोजन के कारण है।

कुछ भी जो _ci के साथ समाप्त होता है वह मामला असंवेदनशील होता है (और उच्चारण / उम्लॉट असंवेदनशील)। तो हाँ, MySQL एक ही चीज़ "गुनी" और "गुन्नी" पर विचार करेगा, जब तक कि आप अपना संयोजन बदल नहीं लेते।

डॉक्स: http://dev.mysql.com/doc/refman/5.0/en/charset-table.html