macports のmysql4 やmysql5 を普通にインストールすると、mysql クライアントから日本語を正しく入力できません。例えば、以下のようなクエリを入力すると、Return を押した時に日本語が見事に化けます。
SELECT name AS 名前 from users;
さらに困ったことに、mysql クライアント使用時にreadline が効かなくて、「Ctrl-r」の履歴参照が使えません。
解決策
これを修正するには、configure 時のオプションを追加する必要があります。実際には、「/opt/local/var/macports/sources/rsync.macports.org/release/ports/databases/mysql5/Portfile」ファイルを以下のように修正します。編集する際にはedit コマントを使います。
sudo port edit mysql5
--- /opt/local/var/macports/sources/rsync.macports.org/release/ports/databases/mysql5/Portfile.orig 2009-01-07 23:27:09.000000000 +0900 +++ /opt/local/var/macports/sources/rsync.macports.org/release/ports/databases/mysql5/Portfile 2009-01-08 00:49:35.000000000 +0900 @@ -70,6 +70,7 @@ --with-unix-socket-path=${prefix}/var/run/${mysql}/mysqld.sock \ --with-mysqld-user=${mysqluser} \ --without-bench \ + --without-readline \ --enable-thread-safe-client variant server {
「--without-readline」オプションは、mysql に同梱されているreadline でなく、システムのreadline を使うというオプションです。これを指定し、次のように一回アンインストールしてインストールしなおすと、日本語の入力ができるようになり、さらにreadline も有効になります。
尚、アンインストールしてもテーブルのデータや設定ファイルは残っているので、特に問題なく解決できました。
sudo port uninstall mysql5 sudo port install mysql5 +server
参考
- J2EE環境構築編 MySQLのインストール
- MacPortsのmysql5でreadlineが組み込まれない - Sooey
- 最初これを参考にして「--with-readline」したらreadline は有効になったけど、日本語の文字化けは直らなかった
- Mac のruby のirb で日本語入力をできるようにする - Slow Dance