こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

perlのDBIよりMysqlにアクセスすると

perlのDBIよりMysqlにアクセスすると
DBD::mysql::db do failed: Data too long for column...のエラーが発生します。
つまり長すぎるデータを格納しようとしてエラーが出ているようです。
格納するデータの文字コードはutf-8です。
カラムは試しにvarchar(255)にしていますので、おそらく文字コードが原因ではないかと推測しています。
phpMyAdminから SHOW VARIABLES;コマンドを実行したところ
文字コード関係は以下の設定です。

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server sjis
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.0\share\char...
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server sjis_japanese_ci

開発環境は
MySQL - 5.0.24-community-nt
phpMyAdmin - 2.8.2.2
MySQL クライアントバージョン: 4.1.7
OS;WIN_XP
Active Perl 5.8.8
です。

お気付きの点がございましたらご指摘宜しくお願いいたします。

投稿日時 - 2010-06-04 19:05:22

QNo.5944746

暇なときに回答ください

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

>phpMyAdminから SHOW VARIABLES;コマンドを実行したところ

perlからの要求が問題になっているのだから、phpMyAdminからでなく、perlから実行して確認してください。
あるいは、perlからMySQL接続後、最初に set names を投げてみてください。

投稿日時 - 2010-06-05 17:41:27

お礼

返事がおくれました。
character_set_server sjisが問題だと思い、my.iniを見るとcharacter_set関係でs_jisに設定されている項目があったので全てutf8に変更したところ解決しました。
今回のケースですとクライアント側とサーバ側の文字コードの整合性に問題があったようです。
回答ありがとうございました。

投稿日時 - 2010-06-10 10:20:58

このQ&Aは役に立ちましたか?

24人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問