LaradockのMySQLの日本語の文字化けを解消する方法

1644 回閲覧されました
みなさんこんにちは、jonioです。
今回はLaradockのMySQLに接続した時にテーブルの中の日本語が「?」になるのを解消する方法について解説します。
show variables like ‘%char%’;
LaradockのMySQLに接続してテーブルを見たら本当は↓にならないといけないのに日本語の部分(早田、山田、田中の部分)が全て「?」になりました。
変だと思いMySQLで「show variables like ‘%char%’;」で言語設定を調べたら↓になっていました。
「latin1」があるのがダメだと思ったので「utf8mb4」に変える事にしました。
my.cnf
「laradock > mysql > my.conf」の中に追記をします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# The MySQL Client configuration file. | |
# | |
# For explanations see | |
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html | |
[mysql] | |
[mysqld] | |
skip-character-set-client-handshake | |
character-set-server = utf8mb4 | |
# collation-server = utf8mb4_general_ci | |
collation-server = utf8mb4_unicode_ci | |
init-connect = SET NAMES utf8mb4 | |
//ここから追加 | |
[client] | |
default-character-set=utf8mb4 | |
//ここまで追加 | |
17行目も必ず書いてください、私は書かなくてMySQLに接続ができなくなって焦りました。
database.php
「Laravelのプロジェクト > config > database.php」を↓にします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'mysql' => [ | |
'driver' => 'mysql', | |
'url' => env('DATABASE_URL'), | |
'host' => env('DB_HOST', '127.0.0.1'), | |
'port' => env('DB_PORT', '3306'), | |
'database' => env('DB_DATABASE', 'forge'), | |
'username' => env('DB_USERNAME', 'forge'), | |
'password' => env('DB_PASSWORD', ''), | |
'unix_socket' => env('DB_SOCKET', ''), | |
'charset' => 'utf8mb4', //この行を編集 | |
'collation' => 'utf8mb4_unicode_ci', //この行を編集 | |
'prefix' => '', | |
'prefix_indexes' => true, | |
'strict' => true, | |
'engine' => null, | |
'options' => extension_loaded('pdo_mysql') ? array_filter([ | |
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), | |
]) : [], | |
] |
編集と書いてある行ですが私のLaravelのプロジェクトでは変更後になっていましたがLaravelのバージョンに よっては違うかもしれないので掲載しておきます。
変更の反映と確認
ターミナルで「docker-compose up -d –build workspace nginx mysql」と入力してLaradockを立ち上げます。
そしてMySQLに接続して「show variables like ‘%char%’;」で言語を確認したら↓になります。
これでテーブルの「?」だった所が日本語になっているはずです。