current : index > Eclipse,MySQL,etc > Illegal mix of collations

March 10, 2005

Illegal mix of collations
Posted at 01:13 PM  |  Category : [Eclipse,MySQL,etc]

 なんだか予想通りというか、やっぱり放置しちゃったわけですが。
とりあえず、思い出したことをダラダラと。

 12/8の日記に書いてたMySQLのエラー(下)ですが、

java.sql.SQLException: General error message
from server: "Illegal mix of collations
 (latin1_swedish_ci,IMPLICIT) and 
(sjis_japanese_ci,COERCIBLE) for operation '='"
これはデータベースの属性を変更してあげることで解決できました。
エラー自体は、swedishとjapaneseを=で結べないよって感じで、前者がサーバ側のコード、後者がクライアント側のコードみたいです。
 なので、
"create database databasename default character set sjis collate sjis_japanese_ci;"
って感じでデータベースを作ってあげるとダイジョーブだと思います。
すでに作成済みの場合は、alter database あたりでいけるんじゃないかなぁ…。試してないから自信はないですけど。

 確認の方法としては、データベースに接続して、

use databasename;
で、目的のデータベースを選択してから、
show variables like '%character%';
な感じで設定値を表示してみる。
+--------------------------+-------------------------------
| Variable_name            | Value
+--------------------------+-------------------------------
| character_set_client     | sjis
| character_set_connection | sjis
| character_set_database   | sjis
| character_set_results    | sjis
| character_set_server     | latin1
| character_set_system     | utf8
| character_sets_dir       | C:\Program Files\MySQL\MySQ
+--------------------------+-------------------------------
ここの、上から四つが同じコードが指定されているかと、
show variables like '%character%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | sjis_japanese_ci  |
| collation_database   | sjis_japanese_ci  |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
ここの、上から二つが同じコードかをチェックすればいいと思います。
…たぶん。



トラックバック

このエントリーのトラックバックURL:


コメント一覧



コメントをつける




保存しますか?