سؤال

لدي طاولة مستخدمين يوجد فيها عمود يسمى "LickName"، UTF-8 المشفرة، varchar (20)، الجدول في InnoDB.هناك 2 سجل واحد لديه اسم مستعار="gunni" واللقب الآخر= 'günni'.عندما حاولت تطبيق فهرس فريد على هذا العمود، أعطاني MySQL هذا الخطأ:

الخطأ 1062 (23000) في السطر 263: الإدخال المكرر 'gunni' للمفتاح 2

راجعت البيانات هناك سجل واحد فقط يحتوي على اسم "Gunni"، وإذا قمت بتغيير سجل "Günni" إلى شيء آخر، فقم بتطبيق الفهرس الفريد مرة أخرى، كل شيء يعمل بشكل جيد.

كيف تأتي "Günni" & "gunni"؟فيما يلي قيم عرافة لهم، أحصل على هذا مع وظيفة HEX () MySQL ():

gunni -> 677566E69

günni -> 67C3BC6E6E69

من الواضح أنهم مختلفون.كيف تعامل mysql يعامل هذه 2 كما هو نفسه؟أم أن هناك شيء لا أعرفه عن فهارس فريدة من نوعها؟أو حتى، هل يمكن أن يكون هذا خطأ mysql؟

هل كانت مفيدة؟

المحلول

بسبب الترتيب الذي تستخدمه.

أي شيء ينتهي مع _ci غير حساس لحالة الأحرف (وأيضا غير حساس لهجة / UMLAUT).لذلك نعم، سوف تنظر MySQL في "Günni" و "Gunni" نفس الشيء، إلا إذا قمت بتغيير ترتيبك.

المستندات: http://dev.mysql.com/الوثيقة / refman / 5.0 / en / charset-table.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top