Bei MySQL kann der folgende Fehler auftreten:
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
Hier ist kurz das Problem erklärt und wie man es fixen / umgehen kann.Mit 'Collation' wird die Zeichencodierung bezeichnet. Die Standard-Codierung bei MySQL als schwedische Firma ist 'latin1_swedish_ci'.
Der Fehler besagt, dass in dem SQL Statement Werte miteinander verglichen werden sollen, deren Zeichensatz verschieden ist.
Mit dem folgenden Select kann man die Einstellungen der MySQL-Installation ansehen:
SHOW VARIABLES LIKE '%collation%';
Es sollten die Werte für database, connection und server aufgelistet werden. In MySQL kann man Collations pro Datenbank, Tabelle und sogar Attribut festlegen.
Man kann also alle Tabellen und Attribute auf UTF-8 (oder das gewünschte Format) umstellen:
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Jetzt muss man nur noch die Einstellungen des Servers ändern, damit der auch in UTF-8 arbeitet:
In der my.cnf kann man die Werte für
[mysqld]
character-set-server = utf8
default-character-set = utf8
[mysql]
character-sets-dir=utf8
default-character-set=utf8
Server neu starten und testen.
Wichtiger Hinweis hinterher:
If you change the character set when running MySQL, that may also change the
sort order. Consequently, you must run myisamchk -r -q
--set-collation=collation_name on all MyISAM tables, or your indexes may not be
ordered correctly. (Use --set-character-set before MySQL 4.1.1.)