MySQL monitor UTF-8に統一したがエラーメッセージが文字化けが解決
MySQL 5.0をインストールし、アップデートも数回おこない今日に至るが、
その間、気が付いていながら目をつぶっていたことがる。
それは、SSHを使用してターミナルエミュレーターでサーバーに接続による遠隔操作にて、
MySQLを操作する為に、起動するMySQL monitorというコマンドラインツールで、表示されるエラーメッセージが、なぜか文字化けになっている。
ターミナルエミュレーターの受信エンコードをEUC-JPに変更するとエラーメッセージが文字化けを起こさなくなる事から、MySQL monitorのエラーメッセージがEUC-JPで出力されていると言うことだけ。
エラーメッセージだけが文字化けの状態なので、まぁエラーを起こさなきゃ…ってことで分かっていて放置しておりました。
でも、MySQLにとある組み込みソフトをインストールした事から、慣れないSQL構文からエラーが出まくってストレスがたまる。
ストレス解消のためにも文字化けを解消しようと決意し、実行しました。
その、あっけない結末に向けたメモです。
■ MySQL monitor を起動し MySQL に接続
# mysql -u root -p
Enter password: [パスワード入力]
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2736
Server version: 5.0.51a-log Source distributionType ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
■クライアントとMySQLサーバーの接続情報を確認
mysql> status;
-------------- mysql Ver 14.12 Distrib 5.0.51a, for redhat-linux-gnu (i686) using EditLine wrapper Connection id: 2736 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.0.51a-log Source distribution Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 ← 注目 Db characterset: utf8 ← 注目 Client characterset: utf8 ← 注目 Conn. characterset: utf8 ← 注目 UNIX socket: /tmp/mysql.sock Uptime: 1 hour 54 min 3 sec Threads: 3 Questions: 29981 Slow queries: 4 Opens: 47 Flush tables: 1 Open tables: 41 Queries per second avg: 4.381 --------------
やっぱり、いずれもUTF-8です。
一応、MySQLサーバーの全設定情報からキャラクタに関する項目を確認します。
mysql> show variables like "char%";
+--------------------------+----------------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql/share/mysql/charsets/ | +--------------------------+----------------------------------------+ 8 rows in set (0.00 sec)
やっぱり、UTF-8だよなぁ… orz
失意のまま、MySQLから切断
mysql> exit
Bye
んで、「/etc/my.conf」の設定行をコメントアウトして、MySQLをリスタート、経過観察を繰り返すこと数回。
わ、わかりました。
以下のように、コメントアウトして試したところ、文字化けしたエラーメッセージが出なくなりました。
[mysqld]
#language = /usr/local/mysql/share/mysql/japanese
でも、日本語のエラーメッセージではなく、デフォルトの英語に戻ってしまった。
気になって、エラーメッセージを出力するソースを見てみたところ、Shift-JISとEUC-JPしか、用意されていないことが判明しました。
UTF-8の要求しても、EUC-JPの出力で返されていたので、文字化けが起こるのも当然だな。
ググってコピペして、お手軽運用していたツケが、ついに出た!って感じ。とほほ…
![]() (3) (0) (0) (0)Total: 3 |





