データベースの中身に入っているデータが文字化けするとかじゃないです。
ターミナルでサーバ機に接続して、そこからmysqlコマンドでデータベースに接続して、そこでSQLかちゃかちゃ打ち込んでたりすると、コマンドの実行結果そのものとは別にちょっとしたメッセージが出るじゃないですか。
えーといまいちわかりにくいですね、まあエラーメッセージに顕著なんですよ。
ERROR 1064 (42000): Something is wrong in your syntax : ‘lock’ ノユカ・ : 1 ケヤフワ
ERROR 1141 (42000): ・譯シ・カ。シ ‘root’ (・ロ・ケ・ネ ‘%’ 、ホ・?・カ。シ) 、マオト、オ、・ニ、、、?サ、・
ERROR 1044 (42000): ・譯シ・カ。シ ‘root’@’localhost’ 、ホ ‘information_schema’ ・ヌ。シ・ソ・ル。シ・ケ、リ、ホ・「・ッ・サ・ケ、ン、キ、゙、ケ
とかこんな感じ。
で、これ前々から気にはなっていたんだけども、ずっと放置していて、まあいい加減直したいなと。
そこでまず、この文字化けの文字コードはなんだろうと。
SJISでもUTFでもないんだよなーっていじってたらでましたEUC。
mysql> grant lock tables on information_schema.* to root;
ERROR 1044 (42000): ユーザー ‘root’@’localhost’ の ‘information_schema’ データベースへのアクセスを拒否します
EUCとかどこにも使ってる覚えないんですけど、っていうかサーバ基本的にUTF8なんですけど、っていうことでしらべていたらこちらに答えが。
んで、「/etc/my.conf」の設定行をコメントアウトして、MySQLをリスタート、経過観察を繰り返すこと数回。
わ、わかりました。
以下のように、コメントアウトして試したところ、文字化けしたエラーメッセージが出なくなりました。
[mysqld]
#language = /usr/local/mysql/share/mysql/japaneseでも、日本語のエラーメッセージではなく、デフォルトの英語に戻ってしまった。
気になって、エラーメッセージを出力するソースを見てみたところ、Shift-JISとEUC-JPしか、用意されていないことが判明しました。
UTF-8の要求しても、EUC-JPの出力で返されていたので、文字化けが起こるのも当然だな
はい、うちでもlanguage設定しています。
MySQLはUTF-8で設定しています。
文字化けの文字コードはEUCでした。
完全に一致。
よし。コメントアウトして終わりと。