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

mysql:13913

From: goungoun <goungoun <gounx2@xxxxxxxxxx>>
Date: Wed, 25 Apr 2007 18:35:26 +0900
Subject: [mysql 13913] cp932 で select '十'; すると '十\' になる。(was Re: Access2002+MyODBCでエラー)

こんにちは。

On Mon, 23 Apr 2007 19:00:12 +0900
ezaki <kjc_post@xxxxxxxxxx> wrote:
> 下記構成でAccess2002からMyODBC経由で(「十」などを)挿入/更新すると
> 下記のSQLでエラーが出てしまいます。
> 「UPDATE `info` SET `name`='十\'  WHERE `Code` = 'A0010000000' AND
> `stamp` = '20070420170520';」
> 最新版のODBC5を入れてもダメでした。


linuxに閉じたローカル環境で、同様の現象が再現したので
ご報告します。

・サーバ、linux(debian etch)のMySQL5.0
・クライアント、同環境のmysqlクライアント

↓こんなスクリプトを用意して。
# select '十'; とすると、後のスクリプトの書き方によっては
# エラーになるのであえて'<十>'としています。
-----------------------------------------
$ cat query.txt
set names cp932;
show variables like 'char%';
select '<十>';
select length('<十>');
select char_length('<十>');
select trim('<十>');
select length(trim('<十>'));
select char_length(trim('<十>'));
select hex('<十>');
-----------------------------------------

↓実行するとこんな感じになりました。
(linuxがutf-8環境なので、nkfでスクリプト文字コード変換してます)
-----------------------------------------
$ nkf -W -s hoge | mysql -u test -p | nkf -S -w
Enter password:
Variable_name   Value
character_set_client    cp932
character_set_connection        cp932
character_set_database  utf8
character_set_filesystem        binary
character_set_results   cp932
character_set_server    utf8
character_set_system    utf8
character_sets_dir      /usr/share/mysql/charsets/
<十>
<十\> ←★★★
length('<十>')
4
char_length('<十>')
3
trim('<十>')
<十\>
length(trim('<十>'))
4
char_length(trim('<十>'))
3
hex('<十>')
3C8F5C3E
-----------------------------------------

ポイントは上記の★★★印のところです。

そもそも、マルチバイトを(バイトではなく)1文字として
認識してるのか?とか疑問だったので、char_lengthもしてみました。
'<十>'で3文字と出たので、認識されてますね。
あと、hexの出力も正常ですね。

バージョン周りの情報は以下です。
$ sudo mysql --version
mysql  Ver 14.12 Distrib 5.0.32, for pc-linux-gnu (i486) using readline 5.2
$ sudo mysqld --version
mysqld  Ver 5.0.32-Debian_7etch1-log for pc-linux-gnu on i486 (Debian etch distribution)

ps.
ちなみに、キャラクタセットsjisでもやってみましたが、同じ現象が発生します。


-- 
goungoun <gounx2@xxxxxxxxxx>
http://goungoun.dip.jp/app/


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

     13883 2007-04-23 19:00 [ezaki <kjc_post@xxxx] Access2002+MyODBCでエラー               
     13885 2007-04-23 23:50 ┣["T.Hirotsu" <hirotsu]                                       
     13889 2007-04-24 11:39 ┃┗[ezaki <kjc_post@xxxx]                                     
->   13913 2007-04-25 18:35 ┗[goungoun <gounx2@xxx] cp932 で select '十'; すると '十\' になる。(was Re:  Access2002+MyODBCでエラー)
     13914 2007-04-25 20:54  ┗[goungoun <gounx2@xxx]