2008年2月21日

[mysql 14389] Re: レプリケーション時にDecimal型の値だけ壊れる

こんにちは。

最近、私も同じような現象で困っているので、
解決にはならないかもしれませんが、参考になれば。

DBの文字コード(もしくは接続している文字コード)が
CP932ではないでしょうか?

このあたりの修正での影響で、そのような状態になっている
ようです。
http://bugs.mysql.com/bug.php?id=11338

解決(回避)するには
 ・CP932以外の文字コードで接続する
 ・PreparedStatementを使用しない
 ・(PHPで確認している感じでは、値をbindするさいに
   数値としてbindすると問題ない)
といった感じで回避できるようです。


> はじめまして、川畑と申します。
>
> MySQLをJavaからJConnectorのPreparedStatement
> で使用しているのですが
> レプリケーションを行った際に、Decimal型が壊れるという現象が
> 発生しております。
>
> ---
> OS:RHEL4
> MySQL:5.0.19
> Java:JDK1.4
> ---
>
> 例:下記のようなテーブルがあった際に
> id int(8)
> dec decimal(6,2)
>
> マスタDBに対しinsertを実行すると、正しく挿入されるのです
> が
> ( 例えば id = 4 dec = 5023.0 )
> それをレプリケーションしているスレーブ側でのぞく
> と、decimalの
> 値が999999などとおかしな値になっている状況です。
>
> バイナリログをcatでみる限り、16進数のhex値
> でログに保存されている
> ようなのです。これが原因なのかわかりませんが上記現象となります。
>
> 切り分けですが、コマンドラインのmysqlクライアントで書き
> 込むと
> 正常にレプリケーションされ、またPHPMyAdminから書き込んでも
> 正しくレプリケーションされてしまいます。
>
> これ以上の対処法が見つからずご相談させていただきました。
> 何か情報があればお知らせいただきたいと思います。
>
> ---
> Yusuke Kawabata <kawabata at mars co jp>
>


-----------------------------------------------
IDAAKI
mail:idaaki@xxxxx


投稿者 xml-rpc : 2008年2月21日 09:43
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/70089
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。