- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQL version 5.0.51とcseついて。)
MySQL version 5.0.51とcseのデータ登録の問題について
このQ&Aのポイント
- MySQL version 5.0.51とcseのデータ登録時に、varchar(32)の項目に「あいうえおかきくけこ」を入力しようとすると、8文字しか登録されない現象が発生しています。
- cseの文字コード設定により、1文字が4バイトで認識され、MySQLの文字コード設定であるUTF8では1文字が3バイトで扱われているため、文字数制限が発生している可能性があります。
- Oracleではvarchar(X)でXバイトとなり、MySQLではvarchar(X)でX文字となるため、MySQLの場合、32文字登録可能なはずなのに8文字しか登録されない状況となっています。
- みんなの回答 (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での動作保証はされていません。
お礼
>varchar(x) の x は、MySQL 4.1より前では「バイト数」でした。MySQL 4.1からは「文字数」です。 >ような記憶があります。ともかく、もうサポートされておらず、MySQL 5.0での動作保証はされていません。 ありがとうございました。 なるほど、5.X環境なので文字数になるし、それで上手く動かないのはやはりCSEが対応してないからなんでしょうかね。 ちなみに文字コードはUTF8でした。