Macports のmysql の文字化け問題、readline 問題を直す

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
--- /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
参考