2010-07-26 3 views
7

'nickname'이라는 열이 있고 utf-8로 인코딩 된 varchar (20) 테이블이 InnoDB에있는 users 테이블이 있습니다. 닉네임이 'gunni'이고 다른 닉네임이 'gnnni'인 레코드가 2 개 있습니다. 나는이 칼럼에 고유 인덱스를 적용했을 때, MySQL의 날이 오류를 준 :특정 움라우트에서 Mysql 고유 색인이 작동하지 않습니다.

라인 (263)에서 ERROR 1062 (23000)

: 키 2

에 대한 항목 'gunni를'중복 내가 체크 데이터에는 'gunni'라는 이름이있는 레코드가 하나뿐입니다. 'gnnni'레코드를 다른 것으로 변경 한 후 고유 인덱스를 다시 적용하면 모든 것이 잘됩니다.

어떻게 '구이 니'& 'gunni'가 중복 될 수 있습니까? 여기에 대한 16 진수 값입니다, 내가 mysql을의 진수와 함께이 얻을() 함수 :

gunni -> 67756E6E69

günni -> 67C3BC6E6E69

그들은 분명히 다르다. 어떻게 mysql이이 2를 동일한 것으로 취급합니까? 아니면 고유 인덱스에 대해 모르는 뭔가가 있습니까? 아니면 심지어 이것은 mysql 버그일까요?

+0

저장 엔진을 사용하고 계십니까? – Sarfraz

+0

@sAc : 스토리지 엔진 = InnoDB – Shawn

답변

7

귀하가 사용하는 대조 때문입니다.

_ci로 끝나는 항목은 대소 문자를 구별하며 악센트/움라우트를 구분하지 않습니다. 그래서 네, 당신이 당신의 데이터 정렬을 변경하지 않는 한, MySQL은 "gnnni"와 "gunni"를 같은 것으로 간주 할 것입니다.

문서 : http://dev.mysql.com/doc/refman/5.0/en/charset-table.html

+0

utf8-bin은 필자의 경우 작동 할 수 있습니까? 감사. – Shawn

+0

@Shawn해야합니다. – NullUserException

+0

@Shawn 작동 했습니까? – NullUserException

관련 문제