Pergunta

Eu tenho uma tabela de usuários em que há uma coluna chamada 'apelido', UTF-8 codificou, VARCHAR (20), a tabela está em InnoDB.Há 2 registros um tem um apelido= 'gunni' e o outro apelido= 'günni'.Quando tentei aplicar um índice exclusivo nesta coluna, o MySQL me deu este erro:

.

Erro 1062 (23000) na linha 263: entrada duplicada 'Gunni' para a chave 2

Eu verifiquei os dados Há apenas um registro que tem o nome 'gunni', e se eu alterar o registro 'günni' para outra coisa, aplique o índice exclusivo novamente, tudo funciona bem.

Como é que "Günni" e 'Gunni' sejam duplicados?Aqui estão os valores hexadecimais para eles, eu recebo isso com a função Hex () do MySQL:

.

Gunni -> 67756E6E69

günni -> 67c3bc6e6e69

Eles são obviamente diferentes.Como mysql trata estes 2 como o mesmo?Ou há algo que eu não conheço índices exclusivos?Ou mesmo, isso poderia ser um bug mysql?

Foi útil?

Solução

É por causa da aglutação que você está usando.

Qualquer coisa que tenha terminado com _CI seja insensível em maiúsculas de minúsculas (e também acentuado / UMLAUT insensível).Então sim, o MySQL considerará "Günni" e "Gunni" a mesma coisa, a menos que você mude sua aglutação.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top