macのpsqlで日本語を入力すると?に変換されてしまう

PostgreSQL 9.2というディレクトリにSQL Shell(SQL)というアプリがあるのだが、これを起動するとターミナルが開き、DBへの接続設定が対話形式で始まります。ログイン後に日本語を打ってみるとカンカンカン!と音がして日本語すべてが?になってしまう謎の現象が起きました。列名はいいですけど、データをinsertするときには日本語を使いたいのでとても困ります。

色々調べてみましたが、原因はわかりませんでした。psqlにnオプションを設定すると日本語入力ができるようになります。しかし、文字の編集やカーソルの移動などできなくなるのでとても不便になります。

mysqlコマンドをターミナルから実行するには

GUIからクリックしての起動だとmysqlコマンドを打つ時がありません。

postgres_01_141006

 

そのため、GUIから起動せずにターミナルから起動させます。実際にはターミナルからmysqlコマンドを打つことになります。

$ sudo su - postgres
$ ./bin/psql -n

 まずpostgresユーザーになります。suに-をつけるとそのユーザーのホームディレクトリに移動します。しかし、postgresユーザーになっただけでは、パスが通っていないためpsqlが実行できませんので、相対パスpsqlコマンドを使えば完了です。

nオプションについて

公式ドキュメントによるとnオプションは

入力行の編集とコマンド履歴にリードラインライブラリの使用を 禁止します。

と説明があります。リードラインというのは,ctrl+Fやctrl+Bなどでカーソルの位置を移動したりとかのコマンドが使えるライブラリだそうです。これはターミナルの標準の機能かと思っていました。

結局このオプションを使っても不便なので、後は外部sqlファイルを読み込ませようと思います。