mysql:13246
From: <ska_king2005@xxxxxxxxxx>
Date: Tue, 15 Aug 2006 16:31:18 +0900 (JST)
Subject: [mysql 13246] Re: FEDERATED ストレージ・エンジンでの日本語取り扱い
またまたska kingです。 自分の読解力の無さに辟易します。。。 >TOいけださん なるほど。ご丁寧な説明ありがとうございます。 わかってなかったのは私だけでしょうが、今回の説明といまま でのログを見返してようやくわかりました(笑) mysql_reconnect() -> mysql_real_connect() -> mysql_set_character_set() -> SET NAME の発行 問題のSET NAMESを発行しているのは、 libmysql/client.cのsprintfからmysql_real_query()のif文あ たり(3000-3001行目)でしょうか。。。 バグレポートの結果が楽しみです(^^A --- Tetsuro IKEDA <te.ikeda@xxxxxxxxxx> wrote: > こんにちは。いけだです。 > > 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でコンパイルされているために、こういうことが起き ることになります。 -------------------------------------- Let's start Yahoo! Auction - Free Campaign Now! http://pr.mail.yahoo.co.jp/auction/
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]