※ ChatGPTを利用し、要約された質問です(原文:perlのDBIよりMysqlにアクセスすると)
perlのDBIを使用してMysqlにアクセスする際にデータが長すぎるエラーが発生
このQ&Aのポイント
perlのDBIを使用してMysqlにアクセスする際に、データが長すぎるためエラーが発生しています。文字コードはutf-8で、カラムはvarchar(255)に設定されていますが、文字コードが原因ではないかと推測しています。
開発環境はMySQL 5.0.24-community-nt、phpMyAdmin 2.8.2.2、MySQLクライアントバージョンは4.1.7、OSはWindows XP、Active Perl 5.8.8です。
解決策が見つからず、お気付きの点があればご指摘いただきたいです。
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
です。
お気付きの点がございましたらご指摘宜しくお願いいたします。
お礼
返事がおくれました。 character_set_server sjisが問題だと思い、my.iniを見るとcharacter_set関係でs_jisに設定されている項目があったので全てutf8に変更したところ解決しました。 今回のケースですとクライアント側とサーバ側の文字コードの整合性に問題があったようです。 回答ありがとうございました。