Thursday, December 1, 2011

MySQL クライアントでマルチバイト入力

MySQL クライアント(対話型プログラム)で直接SQLを発行する場合、マルチバイト文字の入力ができなくて不便に感じていました。元々そういうものだと思いこんでいたのですが、実は解決方法がありました。

ターミナルから MySQL クライアントを操作する人であれば、Unix コマンド操作で TAB 補完やコマンド履歴からの入力を使っていると思います。これは readline というライブラリで実現しています。

MySQL クライアントも、この readline を使っているのですが、デフォルトの configure オプション --with-readline により MySQL に同胞されている readline で make された場合に、マルチバイト文字が入力できないことがわかりました。

configure オプションで --without-readline を指定して、システムの readline を使うように変更することで、マルチバイト文字列が入力できるようになります。

$ ./configure --without-readline ...
$ make
$ make install

この場合には、システム側に readline (パッケージなら readline readline-devel)がインストールされていることが必要です。

$ yum install readline readline-devel

つまり MySQL クライアント上でも、Unix コマンドライン操作と同じ readline の補完機能が使えるということですので、長文SQLの末尾に移動するために右矢印キーを押し続ける必要はありません。CTRL-e で素早く末尾に移動できます。