Domanda

Ho una tabella degli utenti in cui c'è una colonna chiamata "Nickname", UTF-8 codificata, Varchar (20), la tabella è in InnoDB.Ci sono 2 record, uno ha un soprannome= 'Gunni' e l'altro nickname= 'Günni'.Quando ho provato ad applicare un indice unico su questa colonna, MySQL mi ha dato questo errore:

.

Errore 1062 (23000) alla linea 263: Duplicata Entry 'Gunni' per il tasto 2

Ho controllato i dati che c'è solo un record che ha il nome "Gunni", e se cambio il record "Günni" per qualcos'altro, quindi applica di nuovo l'indice univoco, tutto funziona bene.

Come vengono duplicati 'Günni' & 'Gunni'?Ecco i valori esagonali per loro, ottengo questo con la funzione Hex () di MySQL:

.

Gunni -> 67756E6E69

Günni -> 67C3BC6E6E69

Sono ovviamente diversi.Come mai MySQL tratta questi 2 come lo stesso?O c'è qualcosa che non conosco degli indici unici?O anche, potrebbe essere un bug mysql?

È stato utile?

Soluzione

È a causa della raccolta che stai utilizzando.

Tutto ciò che termina con _ci è insensibile al caso-insensibile (e anche Accent / Umlaut insensibile).Quindi sì, MySQL prenderà in considerazione "Günni" e "Gunni" la stessa cosa, a meno che tu non cambi la tua collazione.

Documenti: http://dev.mysql.com/DOC / REFMAN / 5.0 / IT / CHARSET-Table.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top