この記事はmiriwoお一人様 Advent Calendar 2022の6日目の記事です
概要
- Dockerコンテナで起動したMySQLのサーバーにてとあるカラムに日本語をinsertしようとしてターミナルで日本語入力後、Enterを押下したが入力できなかった。
- ひとまず今は応急対応として問題解決を優先する。別記事で恒久対応(Dockerコンテナ初回構築時の設定)などを記載するつもり。
解消までの経緯
-
MySQLの設定の文字コードがおかしくなってないか確認した。読み込ませているmy.cnfは下記の様に記載されている。問題無さそう
my.cnf[mysqld] character-set-server=utf8mb4 [client] default-character-set=utf8mb4
-
Dockerコンテナのlocaleがおかしくなってないか確認する。
# locale LANG= LANGUAGE= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=
-
LANGとLC_ALLが空になっている。これはあまりよろしく無さそう。ひとまず下記を実行して設定してみる。
export LC_ALL="ja_JP.UTF-8" export LANG="ja_JP.UTF-8"
-
1つ目を実行した時に下記のエラーが出た。どうやら指定したlocaleである
ja_JP.UTF-8
が存在しない模様である。# export LC_ALL=ja_JP.UTF-8 bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8): No such file or directory
-
現在設定可能なlocaleを出力してみたら確かに
ja_JP.UTF-8
がなかった。# locale -a C C.UTF-8 POSIX
-
下記の方法を参考にlocaleを追加と設定を行ったした。
-
日本語locale追加後は下記コマンドを実行してLC_ALLの設定を実施した。
update-locale LC_ALL="ja_JP.UTF-8"
-
もう一度Dockerコンテナのlocale情報を出力してみる
# locale LANG= LANGUAGE= LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL=ja_JP.UTF-8
-
全体的にja_JP.UTF-8が設定されている模様である。
-
試してみたけどまだ解消しない。
-
下記を実行して再度LANGとLC_ALLを設定してみる。
update-locale LC_ALL="ja_JP.UTF-8" export LC_ALL="ja_JP.UTF-8" export LANG="ja_JP.UTF-8" export LANGUAGE="ja_JP.UTF-8"
-
もう一度Dockerコンテナのlocale情報を出力してみる
# locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL=ja_JP.UTF-8
-
解決した。日本語を入力する事ができた。
参考文献