mysql> 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 | utf8 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.05 sec)
項目 | client/server | 説明 |
---|---|---|
character_set_client | client | クライアントがサーバにクエリを送信する際に使用 |
character_set_connection | client | クライアントが送ったクエリをサーバが解析する際に使用 |
character_set_database | server | サーバのデフォルトキャラクタセット。LOAD DATA INFILE文はこの指定が使用される。 mysql起動時にcharacter_set_serverの値が適用される。 |
character_set_filesystem | ー | |
character_set_results | server | サーバがクライアントにクエリ結果を送る時に使用 |
character_set_server | server | サービス起動時のデフォルトキャラクタセット |
character_set_system | ー | ファイル名をこのキャラクタセットで扱う |
character_sets_dir | ー | キャラクタセットを扱う上で必須となるファイルを配置しているディレクトリ |
基本的に character_set_filesystem, character_sets_dir 以外を utf8 にしておけばOK。
以下のように my.conf がインクルードできるようになっていれば、以下のファイルを作成する
less /etc/mysql/my.cnf
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
...
# Custom config should go here
!includedir /etc/mysql/conf.d/
# ここでは encoding.cnf だけどファイル名は何でもOK
vi /etc/mysql/conf.d/encoding.cnf
# /etc/mysql/conf.d/encoding.cnf
[mysqld]
default-character-set = utf8
[client]
default-character-set = utf8
Dockerを使っているなら、ボリュームを指定してやる。