LaravelのDBが登録しても文字化けしてしまうことがあったので、その対処方法。
show variables like '%char%';
実行結果
+--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | +--------------------------+--------------------------------+
latin1 は文字化けするのでutf8に変更する。
#dockerディレクトリが作成される。
sail artisan sail:publish
ドキュメントルートのdocker-compose.ymlを見てみる。
services: laravel.test: build: context: ./docker/8.1 . . .
上記のバージョンに対応したフォルダにmy.cnfというファイルを作成し、以下のように記述。
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_bin [client] default-character-set = utf8mb4
docker-compose.ymlに追記。
services: laravel.test: . (中略) . mysql: . (中略) . volumes: - 'sail-mysql:/var/lib/mysql' - './docker/8.1/my.cnf:/etc/my.cnf' #この1行を追記 . . .
Laravel sailを再起動
sail down sail up -d
sail mysql
show variables like '%char%';
実行結果
+--------------------------+--------------------------------+ | 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/ | +--------------------------+--------------------------------+
utf8になっていたらOK!!