dedlfix: MySQL unterschiedliche Zeichen werden gleich interpretiert

Beitrag lesen

Tach!

ich habe in der Datenbank folgende 2 Datensätze

Name | Fremdschluessel Alarò | 44 Alaro | NULL

ich habe einen UNIQUE auf Name+Fremdschlüssel. Ich möchte dem 2. Datensatz jetzt ebenfalls den Fremdschlüssel 44 zuweisen. Ich bekomme aber die Meldung dass dies mit dem vorherigen DAtensatz aufgrund des Unique kollidiert.

Für Vergleiche wird die Kollation berücksichtigt.

Suche ich in den Daten mit

SELECT * from Table where name Like 'Alaro'

werden mir beide Datensätze ausgegeben.

Auch das ist ein Problem mit der Kollation.

Ich hab e die Verbindung und die Datensätze als UTF8 deklariert. Was mache ich falsch, bzw wie kann ich erreichen, dass die DAtensätze als 2 verschiedene anerkannt werden?

Die Zeichenkodierung ist nicht die Verantwortliche. Die muss nur stimmen, damit MySQL die richtigen Zeichen interpretieren kann. Für Vergleiche ist dann wie schon erwähnt die Kollation zuständig. Nicht nur Zeichen mit und ohne Diakritika, auch foo und FOO werden beispielsweise in einigen Kollationen als gleich angesehen. Für exakte Vergleiche muss man eine Binärkollation nehmen, also utf8_bin in deinem Fall.

dedlfix.