Pregunta

Tengo una tabla de usuarios en la que hay una columna llamada 'apodo', UTF-8 codificada, VarChar (20), la tabla está en InnoDB.Hay 2 registros, uno tiene un apodo= 'Gunni' y el otro apodo= 'Günni'.Cuando intenté aplicar un índice único en esta columna, MySQL me dio este error:

Error 1062 (23000) en la línea 263: entrada duplicada 'gunni' para la clave 2

Revisé los datos Solo hay un registro que tiene el nombre 'Gunni', y si cambio el registro 'Günni' a otra cosa, luego aplique el índice único nuevamente, todo funciona bien.

¿Cómo es 'Günni' & 'Gunni' se duplica?Aquí están los valores hexagonales para ellos, obtengo esto con la función HEX () de MySQL:

gunni -> 67756E6E69

Günni -> 67C3BC6E6E69

son obviamente diferentes.¿Cómo es que MySQL trata estos 2 como los mismos?¿O hay algo que no conozco sobre índices únicos?O incluso, ¿podría ser este un error MySQL?

¿Fue útil?

Solución

Es debido a la colación que está utilizando.

Cualquier cosa que termine con _CI es insensible a la caja (y también acento / umlaut insensible).Entonces, sí, MySQL considerará "Günni" y "Gunni" lo mismo, a menos que cambie su colación.

documentos: http://dev.mysql.com/DOC / REFMAN / 5.0 / ES / BARSET-TABLE.HTML

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top