MySQL – 日本語入力ができない

概要

LinuxのMySQLクライアントからMySQLに対して日本語を入力したとき、以下のような状況となった。

  • 変換中は表示されるが、確定のためEnterを押すと消えてしまう
  • 下記のようにデータベースに登録できない

これを解決するため、OSのロケール設定とMySQLの文字コード設定を変更する。

OSのロケール設定

localeコマンドで現在のロケール設定を確認。デフォルトでCロケールが設定されている。

/etc/profileに以下の2行を追加して再読み込みor再起動。=の前後には空白を入れないこと

設定変更後。

MySQLの文字コード設定

確認方法と指定方法

初期状態のMySQLの文字コードは以下のような状況。

my.cnfmysqlセクションとmysqldセクションにそれぞれ以下を追加。my.cnfの場所は以下のような方法で特定。

  • mysql --help | grep my.cnf
  • find / -name my.sql

この結果文字コード設定は以下のようになり、日本語の入力が可能になった。

コンソールの文字コード

なおこのとき、Windowsホスト上のVagrantをコマンドプロンプトで操作していた。コンソールの文字コードは932(shift_jis)だったが、入力時に文字化けはしなかった。

それでも入力できない

なお、この設定変更をしても、変更前に作成したデータベースに対して入力できない場合がある。

そのようなときは、以下の2つのいずれかの方法をとる。

  • 新たな設定の下で、データベースから作りなおす
  • データベースとテーブルの設定を個別に変更する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です