2010-07-26 20 views
7

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

त्रुटि 1062 (23,000) लाइन 263 पर: के लिए कुंजी 2

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

कैसे 'günni' & 'gunni' डुप्लिकेट हो? यहाँ उनके लिए हेक्स मान है, मैं mysql के हेक्स के साथ इस मिल() फ़ंक्शन:

Gunni -> 67756E6E69

Gunni -> 67C3BC6E6E69

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

+0

जो भंडारण इंजन आप प्रयोग कर रहे हैं? – Sarfraz

+0

@ एसएसी: भंडारण इंजन = InnoDB – Shawn

उत्तर

7

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

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

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

+0

utf8-bin संभवतः मेरे मामले में काम कर सकता है? धन्यवाद। – Shawn

+0

@Shawn यह चाहिए। – NullUserException

+0

@Shawn क्या यह काम करता है? – NullUserException

संबंधित मुद्दे