2009-04-23 6 views
1

Ich habe diesen Fehler habe:MySQLiQuery_Exception 'mit der Meldung' Illegal Mix von Sortierungen (latin1_swedish_ci, IMPLIZIT) und (utf8_general_ci, coercible) - mit PHP5

Fatal error: Uncaught exception 'MySQLiQuery_Exception' with message 'Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=': select id from 'addresses' where 'shiptozip'='13000' and 'shiptostreet'='Františka Křížka' 

Wie Sie sehen können, ich versuche zu Erhalte eine ID von den Tabellenadressen.

mysql> show variables like 'character%'; 

+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8      | 
| character_set_connection | utf8      | 
| character_set_database | utf8      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8      | 
| character_set_server  | utf8      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 


mysql> show variables like 'collation%'; 
+----------------------+-----------------+ 
| Variable_name  | Value   | 
+----------------------+-----------------+ 
| collation_connection | utf8_general_ci | 
| collation_database | utf8_general_ci | 
| collation_server  | utf8_general_ci | 
+----------------------+-----------------+ 

Wo die Tabelle 'Adressen' auch utf8_general_ci und utf8 hat. Ich denke, es hat etwas mit der Frage Františka Křížka zu tun, da es bei anderen Fragen in Ordnung ist. Die server_collation war latin_swedish_ci, aber ich denke, dass ich es geschafft habe, das alles jetzt zu ändern (wie Sie aus den obigen Tabellen sehen können). Danke im Voraus.

+0

Ja, alle Felder waren noch auf latin1. Ich werde herausfinden, wie man es für alle Felder ändert. Vielen Dank! – Ian

+0

Ein letzter Kommentar: Die Abfrage 'alter table addresses konvertiert in Zeichensatz utf8;' konvertiert alle Spalten in den Tabellenstandard. – Ian

Antwort

0

Können Sie auf Ihre Frage anhängen die Sortierung für die Spalten „shiptoaddress“ und „shiptozip“ von:

SHOW FULL COLUMNS FROM addresses; 

Von der Beweise, die Sie präsentiert haben, was wahrscheinlich ist, der Fall sein, dass die „shiptoaddress“ -Spalte hat immer noch latin1 encoding. Wenn Sie die Codierung/Sortierung für eine Tabelle festlegen, legen Sie einen Standardwert fest. Dieser Standardwert kann für einzelne Spalten überschrieben werden.

Wenn die Abfrage funktioniert für where address = 'Frank' aber funktioniert nicht für where address = 'Františka' das ist, weil "Františka" nicht in latin1 umwandelbar ist.

Verwandte Themen