2010-12-14 51 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

相關問題