[前][次][番号順一覧][スレッド一覧]

mysql:13245

From: Tetsuro IKEDA <Tetsuro IKEDA <te.ikeda@xxxxxxxxxx>>
Date: Tue, 15 Aug 2006 12:25:38 +0900
Subject: [mysql 13245] Re: FEDERATED ストレージ・エンジンでの日本語取り扱い

こんにちは。いけだです。

saka kingさんが仰っているところの、
skip-character-set-client-handshakeを指定することで
クライアント側の文字コード、すなわち

・character_set_client
・character_set_connection
・character_set_result

といったものが、character_set_serverの値によって
自動的に設定されるというのは合っていると思います。

しかしこの機能には盲点がありまして、
明示的に"SET NAMES xxx"を発行すると上記変数を
上書きできるというのがあります。

従って、character_set_server=utf8となっていて、
skip-character-set-client-handshakeが指定されていても、

SET NAMES latin1;

というのが発行されると、character_set_result=latin1となるため、
MySQL 4.1から実装された文字コード自動変換機能がここで使用される
ようになり、「utf8→latin1」への変換過程で文字化けが発生する、
ということです。

で、この"SET NAMES latin1"というのが、Federatedのローカルmysqldと
リモートmysqldの接続が切れた場合(かつローカルmysqldがそれに気づいて
いない場合)に、発行されるということが、今回のポイントではないかと
思います。

ここでコンパイル時に--with-charset=utf8としておくと、"SET NAMES utf8"
が発行されるので問題ないのですが、MySQL AB配布バイナリを使用すると
latin1でコンパイルされているために、こういうことが起きることになります。

ska_king2005@xxxxxxxxxx wrote:
> ska kingです。
> 
>> TO 池田さん
> バグレポート見てませんでした。
> 英語がわからず、、、さらにC言語がわからず、、、すいませ
> ん(爆)
> 
> 接続や再接続に関わらず、「skip-character-set-client-handshake
> 」を指定すると、
> クライアントの文字コードが、サーバ側の「character_set_server
> 」の値で
> 上書きされるものだと思っていました。
> 内部的な動きはわかっていませんが。。。
> 
> FEDERATEDを使用したときの文字コード決定フローは、mysqlク
> ライアントと同じ流れなんでしょうかね。
> 

-- 
Tetsuro IKEDA
Sumisho Computer Systems Corp.
Open Source System Div.
te.ikeda@xxxxxxxxxx
TEL +81-3-5166-2420
FAX +81-3-5166-1189

[前][次][番号順一覧][スレッド一覧]

     13235 2006-08-10 22:41 [tateyan <tateyan@xxx] FEDERATEDストレージ・エンジンでの日本語取り扱い
     13236 2006-08-10 22:57 ┗["Tetsuro IKEDA" <ikd]                                       
     13237 2006-08-10 23:22  ┗["Tetsuro IKEDA" <ikd]                                     
     13238 2006-08-11 01:12   ┗["Tetsuro IKEDA" <ikd]                                   
     13239 2006-08-11 22:39    ┗[Tetsuro IKEDA <te.ik]                                 
     13240 2006-08-11 22:57     ┗[tateyan <tateyan@xxx]                               
   @ 13242 2006-08-14 17:39      ┗[<ska_king2005@xxxxxx]                             
     13243 2006-08-14 18:04       ┗["Tetsuro IKEDA" <ikd]                           
     13244 2006-08-15 10:06        ┗[<ska_king2005@xxxxxx]                         
->   13245 2006-08-15 12:25         ┗[Tetsuro IKEDA <te.ik]                       
     13246 2006-08-15 16:31          ┗[<ska_king2005@xxxxxx]