(IMPLICIT latin1_swedish_ci) alfabe Yasadışı karışımı ve (utf8_general_ci, Coercible) 'mesajıyla' MySQLiQuery_Exception - PHP5 ile

1 Cevap php

Ben bu hata var:

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'

Gördüğünüz gibi, ben tablo adreslerden bir kimliği almak için çalışıyorum.

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 |
+----------------------+-----------------+

Table 'adresler' de utf8_general_ci vardır ve utf8. Nerede Ben diğer sorguları ile ok gibi, sorgu Františka Křížka ile ilgisi var sanırım. Server_collation latin_swedish_ci olması için kullanılır ama ben şimdi tüm (Eğer yukarıdaki tablolardan gördüğünüz gibi) değiştirmek başardı düşünüyorum. Şimdiden teşekkürler.

1 Cevap

Sorunuza sütunları "shiptoaddress" ve "shiptozip" için harmanlama için ekleyebilirsiniz:

SHOW FULL COLUMNS FROM addresses;

Eğer takdim ettik kanıtlardan, ne oluyor be olasıdır "shiptoaddress" sütunu hala latin1 kodlama olmasıdır. Bir tablo için kodlama / harmanlama kurduğunuzda varsayılan ayarı ediyoruz. Bu varsayılan kolonlar için ayrı ayrı kılınabilir.

Sorgu where address = 'Frank' için çalışıyor ama için işe yaramazsa "Františka" latin1 dönüştürülebilir değil çünkü where address = 'Františka' bu.