✨
mySQLの日本語を読めるように設定する
日本語だけ文字化けする
+----+-----------+---------+------------+---------------------+---------------------+
| id | team_name | user_id | admin_type | created_at | updated_at |
+----+-----------+---------+------------+---------------------+---------------------+
| 4 | ??? | 6 | 0 | 2025-01-22 08:28:29 | 2025-01-22 08:28:29 |
| 5 | ???? | 6 | 0 | 2025-01-22 10:09:43 | 2025-01-22 10:09:43 |
| 6 | ??? | 6 | 0 | 2025-01-22 10:11:22 | 2025-01-22 10:11:22 |
+----+-----------+---------+------------+---------------------+---------------------+
文字コードを登録
mysqlの中に入ります。
./vendor/bin/sail mysql -u root -p
mysqlに文字コードを登録します。
SET NAMES utf8mb4;
これだけで日本語表示になりました。
+----+--------------+---------+------------+---------------------+---------------------+
| id | team_name | user_id | admin_type | created_at | updated_at |
+----+--------------+---------+------------+---------------------+---------------------+
| 4 | テスト1 | 6 | 0 | 2025-01-22 08:28:29 | 2025-01-22 08:28:29 |
| 5 | テスト2 | 6 | 0 | 2025-01-22 10:09:43 | 2025-01-22 10:09:43 |
| 6 | テスト3 | 6 | 0 | 2025-01-22 10:11:22 | 2025-01-22 10:11:22 |
+----+--------------+---------+------------+---------------------+---------------------+
日本語表示を固定にする
上記のやり方だとexitすると表示が戻ってしまいます。なのでymlファイルの修正とmy.cnfファイルを追加して表示を固定することもできます。
my.cnfの作成
Laravelなどのdocker-compose.yamlと同じディレクトリに下記をファイルを追加します。
touch my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
[client]
default-character-set = utf8mb4
yamlファイルに追記
mysqlやdbと書かれている中のvolumesにmy.cnfを読み込むように書いておきます。
- './my.cnf:/etc/my.cnf'
dockerの再起動
下記のコマンドで再起動します。
docker-compose down
docker-compose up -d
mysqlの中で確認してみる
ログインはこれ
./vendor/bin/sail mysql -u root -p
文字コードの確認はこれ
SHOW VARIABLES LIKE 'character_set%';
下記になっていれば成功です。
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
ここまでやっておくと、mySQLからexitしても再ログインしたら日本語のままになっています。
Discussion