-PR-
解決済み

MySQL version 5.0.51とcseついて。

  • すぐに回答を!
  • 質問No.6262983
  • 閲覧数435
  • ありがとう数4
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 34% (8/23)

MySQL version 5.0.51とcseついて。


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

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

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


と迷走しております。どなたかご存知の方ご回答いただければ幸いです。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル14

ベストアンサー率 43% (833/1926)

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での動作保証はされていません。
お礼コメント
wheather21

お礼率 34% (8/23)

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

ありがとうございました。
なるほど、5.X環境なので文字数になるし、それで上手く動かないのはやはりCSEが対応してないからなんでしょうかね。
ちなみに文字コードはUTF8でした。
投稿日時 - 2010-11-09 10:56:31
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


抽選で合計100名様にプレゼント!

ピックアップ

ページ先頭へ