LoginSignup
0
3

More than 3 years have passed since last update.

docker-composeで起動したmysqlのテーブルの日本語が文字化け「???」するのを直す手段

Posted at

背景

実装のエビデンスのために、mysqlのテーブル内容を貼る必要があったのですが、以下のような感じで日本語部分が文字化け(「????」部分)してしまいました。

mysql> SELECT * FROM employee;
+----+--------------------------------------+------+-------------------+----------+-----------+
| id | uuid                                 | name | email             | password | isDisplay |
+----+--------------------------------------+------+-------------------+----------+-----------+
|  1 | 24bb8cda-d7c8-41b1-a641-2d310a9a04b1 | ???? | test@test.co.jp   | test     |         1 |
|  2 | a8ed75e2-8c75-43bc-aa01-d0638457d390 | ???? | check@check.co.jp | check    |         0 |
|  3 | 86f9a92c-d931-4369-9788-87f0e640a7f1 | ???? | ok@ok.co.jp       | ok       |         1 |
+----+--------------------------------------+------+-------------------+----------+-----------+

これを直す手段を共有します。

手段

docker-composeで立てたmysqlにアクセスして、以下を叩きます。

mysql> status;
--------------
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    latin1
Conn.  characterset:    latin1
--------------

ここの

  • Server characterset
  • Db characterset
  • Client characterset
  • Conn. characterset

4つがutf8になるようにする必要があります。
そのために、docekr-compose.ymlをいじります。

docekr-compose.yml
version: '3'
services:
  db:
    image: mysql
    # ↓のcommandの一行を追加する
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci --skip-character-set-client-handshake
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: payment
      MYSQL_USER: user
      MYSQL_PASSWORD: passwordpassword

もう一度、docker-composeで立てたmysqlにアクセスして、確認すると、

mysql> status;
--------------
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

utf8に変わっています。

最後に、文字化けしていないかもう一度確認してみます。

mysql> select * from employee;
+----+--------------------------------------+--------------+-------------------+----------+-----------+
| id | uuid                                 | name         | email             | password | isDisplay |
+----+--------------------------------------+--------------+-------------------+----------+-----------+
|  1 | 24bb8cda-d7c8-41b1-a641-2d310a9a04b1 | 田中太郎     | test@test.co.jp   | test     |         1 |
|  2 | a8ed75e2-8c75-43bc-aa01-d0638457d390 | 山田大輔     | check@check.co.jp | check    |         0 |
|  3 | 86f9a92c-d931-4369-9788-87f0e640a7f1 | 佐藤次郎     | ok@ok.co.jp       | ok       |         1 |
+----+--------------------------------------+--------------+-------------------+----------+-----------+

直りました。

出典

https://qiita.com/waterada/items/1dbf6a977611e0e8f5c8
https://qiita.com/luccafort/items/0553c589dcc6459746bc

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