मेरे पास एक उपयोगकर्ता तालिका है जिसमें एक कॉलम है"उपनाम" कहा जाता है, 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