アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
です。

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

A 回答 (1件)

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



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

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

お礼日時:2010/06/10 10:20

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