2010-12-14 49 views
0

我该如何解决归类(latin5_turkish_ci,隐含的)非法结构和(latin1_swedish_ci,COERCIBLE)运行 '='

"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 

- 我改变了collat​​e as latin5_turkish_ci,但不起作用。 之间,几分钟后(大量的查询),问题自行消失。

+3

camış是什么意思? – 2013-01-21 21:04:26

回答

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)填充它,删除旧列并重命名新列。

+0

谢谢。我明白了。但是我已经用alter table改变了表格的字符集。有没有另一个MySQL的声明? – wonnie 2010-12-14 20:05:14

+0

看到我的更新答案,可能是一个解决方案 – 2010-12-14 20:13:09

相关问题