LoginSignup
0
1

More than 1 year has passed since last update.

Docker MySQLで日本語を入力してEnterを押下しても反映されない(応急対応編)

Last updated at Posted at 2022-12-06

この記事は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
    
  • 解決した。日本語を入力する事ができた。

export_LC_ALL_ja_JP_UTF-8_•Untitled-1—_project.png

参考文献

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1