2010-12-14 8 views
0

にはどうすれば解決することができ違法ミックスと操作のための(latin1_swedish_ci、強制可能) '='

"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をlatin5_turkish_ciとして変更しましたが、機能しません。 数分(多くのクエリ)の間に、問題が単独で消えます。

+3

camışの意味は何ですか? –

答えて

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

+0

私の解決した答えを見てください –

関連する問題