MySQL unterschiedliche Zeichen werden gleich interpretiert
bobby
- datenbank
- sql
Moin,
Folgendes Problem.
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.
Siche ich in den Daten mit
SELECT * from Table where name Like 'Alaro'
werden mir beide Datensätze ausgegeben. 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?
Gruß Bobby
Moin,
Kollation auf utf8_bin geändert, und schon funktioniert es.
Gruß Bobby
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.
Es liegt an der Collation. Setze die Collation auf utf8_binary. Dann wird aber auch zwischen Alarò und alarò unterschieden.