mysql:9524
From: yyuji <yyuji <yyuji@xxxxxxxxxx>>
Date: Wed, 02 Jun 2004 18:07:32 +0900
Subject: [mysql 09524] Re: UTF-8でのUpdate
山口です。
結果的に以下のとおりでした。
・MySQLの設定
(my.iniの設定)
[mysqld]
default_character-set=latin1
・データベースの設定
(Create database時の設定)
DEFAULT CHARACTER SET latin1
・カラムのキャラクターセット
TX_NAME:utf8
TX_UID :latin1
以上の設定でJDBC経由で正常にupdateするには、
・コネクションストリングの指定
useUnicode=true&characterEncoding=utf8
・実行前処理
ステートメントで
execute("set character set utf8")
実行しておく
・SQL文の整形
utf8を使用するカラムに対して
N または _utf8
のキャラクタイントロデューサーを指定する。
例)
update tbl_test set tx_name = N'" + buf_name.toString() + "'
where TX_UID = '" + uid + "';
または、
update tbl_test set tx_name = _utf8'" + buf_name.toString() + "'
where TX_UID = '" + uid + "';
以上です。
yasuyuki@xxxxxxxxxx wrote:
>えんどう やすゆき です。
>
>> 本件、カラムによってcharacter set が違っていたことが原因だったようです。
>>
>> update tbl_test set tx_name = '" + buf_name.toString() + "'
>> where TX_UID = '" + uid + "';
>>
>> 上記の
>> tx_name はutf8
>>
>> TX_UID はlatin1 でした。
>>
>> よって、where句で"Illegal mix of collations"が発生する結果となっていました。
>
>SET 句で charactor set を明示的に指定するとどうなるのでしょうか...?
>
>http://dev.mysql.com/doc/mysql/ja/SET_OPTION.html
>
>
>--
>ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
>http://www.kahua.org/
>http://www.timedia.co.jp/
>
>
9484 2004-05-31 18:41 [yyuji <yyuji@xxxxxxx] UTF-8でのUpdate 9485 2004-05-31 19:16 ┣[<yasuyuki@xxxxxxxxxx] 9486 2004-05-31 19:35 ┃┗[yyuji <yyuji@xxxxxxx] 9487 2004-05-31 20:01 ┃ ┗[<yasuyuki@xxxxxxxxxx] 9499 2004-06-01 10:38 ┃ ┗[yyuji <yyuji@xxxxxxx] 9503 2004-06-01 12:59 ┃ ┗["HIROSE, Masaaki" <h] 9504 2004-06-01 13:18 ┃ ┣[yyuji <yyuji@xxxxxxx] 9505 2004-06-01 13:35 ┃ ┗["TAKAHASHI, Tomohiro] 9500 2004-06-01 11:18 ┗[ML account <ml@xxxxx] 9506 2004-06-01 13:41 ┗[yyuji <yyuji@xxxxxxx] 9510 2004-06-01 16:51 ┣[<yasuyuki@xxxxxxxxxx] 9513 2004-06-01 19:56 ┃┗[yyuji <yyuji@xxxxxxx] 9516 2004-06-01 20:25 ┃ ┗[<yasuyuki@xxxxxxxxxx] -> 9524 2004-06-02 18:07 ┃ ┗[yyuji <yyuji@xxxxxxx] 9511 2004-06-01 17:16 ┗[ML account <ml@xxxxx] 9514 2004-06-01 19:58 ┣[yyuji <yyuji@xxxxxxx] 9515 2004-06-01 20:22 ┗[yyuji <yyuji@xxxxxxx]