1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker + mysql 日本語対応する

Last updated at Posted at 2021-09-14

##はじめに
dockerのコンテナの中でmysqlを使用してテーブル表示させたら、日本語で登録しているところが????になっていました。

日本語でちゃんと表示できるように設定します。

##解決策
ローカルのアプリのsrc/db/にmy.cnfというファイルを作成して下記の記述をします。
コンテナの中のmysqlの設定ファイルの内容をこのファイルに書いてそれをコンテナのファイルにコピーします。

src/db/my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-authentication-plugin = mysql_native_password

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server=utf8mb4

[client]
default-character-set = utf8mb4

docker-compose.ymlのvolumes:に下記を追加します。

docker-compose.yml
#~省略~
  - ./src/db/my.cnf:/etc/mysql/my.cnf
#~省略~

あとはコンテナを立て直してデータベースを見ると日本語で表記されていました。

##うまくいかなかったこと

この解決策をいろいろ調べていたらdocker-compose.ymlのcommand: に下記の記述を追加すればいいという回答がたくさん出てきました。

docker-compose.yml
#~省略~
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

しかし、うまくいきませんでした。
もし上記のcommandが実行されていた場合にmysqlの設定に記述されるものが先ほど紹介したmy.cnfの中身です。

コマンドで設定するやり方を諦めて、自分で作ってコンテナにコピーといった感じでしょうか。

##最後に
日本語表示はうまくいったのですが、コンソールから日本語を入力してもenterを押すと消えてしまいます。
次はそれを解決しなければ。。。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?