1. MAKIZOU.COM
  2. webシステム開発・運用・保守

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 distribution

Type ‘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の出力で返されていたので、文字化けが起こるのも当然だな。

ググってコピペして、お手軽運用していたツケが、ついに出た!って感じ。とほほ…

この記事は参考になりましたか?
1つ星2つ星3つ星4つ星5つ星
Loading ... Loading ...
日付2008年10月10日
カテゴリwebシステム開発・運用・保守
ページビュー3,031PV
add to hatenahatena.comment(3)add to del.icio.us(0)add to livedoor.clip(0)add to Yahoo!Bookmark(0)Total: 3
トラックバック(0)
コメント(0)

トラックバック用URL

コメント

使用できるHTMLタグ
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>