操作'='的非法混合排序(latin5_turkish_ci,IMPLICIT)和(latin1_swedish_ci,COERCIBLE)

时间:2010-12-14 19:48:47

标签: php mysql character-encoding

我该如何解决

"Illegal mix of collations (latin5_turkish_ci,IMPLICIT) 
and (latin1_swedish_ci,COERCIBLE) 
for operation '='" problem? 

我的查询:select * from up where name='camış'

连接选项:

SET NAMES 'latin5'
SET character_set_connection = 'latin5'
SET collation_connection = latin5_turkish_ci

- 我将整理更改为latin5_turkish_ci但不起作用。 在几分钟(大量查询)之后,问题就会消失。

1 个答案:

答案 0 :(得分:0)

这个相当糟糕的想法但应该有效:

SELECT * 
  FROM up 
 WHERE CONVERT(name USING latin5) COLLATE latin5_turkish_ci = 'camış'

好主意是将所有列转换为所需的字符集(这应该是UTF-8)。

[+]通过转换我的意思是不更改表/列的默认排序规则,而是转换其中的所有数据。所以我会用目标字符集创建新列,用UPDATE table SET new_column = CONVERT(old_column USING characterset)填充它,删除旧列并重命名新列。