dポイントプレゼントキャンペーン実施中!

MySQL version 5.0.51とcseついて。


cseというフリーのデータベース接続ツールを使用してMySQLに接続しているのですが、
その際、varchar(32)という項目に「あいうえおかきくけこ」を入力しようとすると
「あいうえおかきく」までしか登録されません。

データベースの文字コードはUTF8を設定しているので全角1文字3バイトだと思うのですが
cseだと1文字4バイトで認識されているのでしょうか?

この事象を調べている最中に、Oracleではvarchar(X)でXバイトだが、
MySQLだとX文字という記述を見つけ、そうだとしたら32文字登録可能なのに
8文字しか登録されない??


と迷走しております。どなたかご存知の方ご回答いただければ幸いです。

A 回答 (1件)

cseって、もうサポートも終わってて、動作保証もされていないと思いますが。

。。


ODBC接続しているのですよね?
ODBCはどのバージョンのものを使っているのでしょうかね?設定で、set namesを投げるようにしてますか?

接続後、

show variables like '%char%'

で、有効になっている文字コードをまず確認してください。

また、

show create table 表名

で、意図した表定義になっているか、特に文字コードを確認してください。

>Oracleではvarchar(X)でXバイトだが、MySQLだとX文字という記述を見つけ

varchar(x) の x は、MySQL 4.1より前では「バイト数」でした。MySQL 4.1からは「文字数」です。

この辺は、MySQLユーザ会のFAQが参考になるでしょう。
http://www.mysql.gr.jp/


ちなみに、cseでは

「古いバージョンの日本語サーバー対応版 libmysql.dll を使ってMySQLに接続できるようにしていた」

ものが、MySQL 5.0でのユーザ認証方法(パスワードの形式変更?)があり、ODBC接続するしかなくなった

ような記憶があります。ともかく、もうサポートされておらず、MySQL 5.0での動作保証はされていません。
    • good
    • 0
この回答へのお礼

>varchar(x) の x は、MySQL 4.1より前では「バイト数」でした。MySQL 4.1からは「文字数」です。
>ような記憶があります。ともかく、もうサポートされておらず、MySQL 5.0での動作保証はされていません。

ありがとうございました。
なるほど、5.X環境なので文字数になるし、それで上手く動かないのはやはりCSEが対応してないからなんでしょうかね。
ちなみに文字コードはUTF8でした。

お礼日時:2010/11/09 10:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!