何が起きたか?
docker公式mysqlコンテナを使用していたのですが、添付画像のように
mysqlコンテナ内に入って、bashで日本語入力してエンターを押すと
入力した日本語が消える問題が発生しました。
※半角英数字は入力、実行ともに出来る。
原因
原因としては下記参考URLにもありますが、
・databaseの文字コードが対応していない
・日本語環境を追加していない
の二つでした。
参考URL↓
https://teratail.com/questions/268253
解決方法
まず、docker-compose.ymlしか定義していない場合は、
db用のDockerfileを作成する必要があります。
下記が実際に解決したDokcerfile定義になります。
省力している箇所もありますが各プロジェクトに合わせて、
随時修正して下さい。
docker-compose.yml
db:
image: mysql:8.0
container_name: sample
###### 省略 ######
# 以下追加
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# ここまで
続いてDockerfile
FROM mysql:8.0
COPY my.cnf /etc/mysql/conf.d/my.cnf
# 日本語環境を追加
RUN apt-get update && apt-get install -y locales \
&& sed -i -e 's/# \(ja_JP.UTF-8\)/\1/' /etc/locale.gen \
&& locale-gen \
&& update-locale LANG=ja_JP.UTF-8
# ここまで
ENV LC_ALL ja_JP.UTF-8
ENV TZ Asia/Tokyo
ENV LANG=ja_JP.UTF-8
CMD ["mysqld"]
EXPOSE 3306
以上の設定でdocker公式mysqlコンテナでも、
日本語が扱えるようになっているはずです!
これでやっと日本語のinsertが実行できる。。。
今やDockerは必須スキルになりつつあるなぁ〜