まとめ
[mysql] default-character-set=utf8mb4 [mysqld] character_set_server=utf8mb4 collation-server=utf8mb4_bin
- [mysql] の default-character-set=utf8mb4 で変更される項目
- character_set_client: latin1 -> utf8mb4
- character_set_connection: latin1 -> utf8mb4
- character_set_results: latin1 -> utf8mb4
- [mysqld] の character_set_server=utf8mb4 で変更される項目
- character_set_database: utf8mb4 -> utf8mb4
- character_set_server: utf8mb4 -> utf8mb4
- [mysqld] の collation-server=utf8mb4_bin で変更される項目
- collation_database: utf8mb4_0900_ai_ci -> utf8mb4_bin
結果
mysql> SELECT version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) mysql> SHOW VARIABLES LIKE "chara%"; +--------------------------+--------------------------------+ | 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 | utf8 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | +--------------------------+--------------------------------+ 8 rows in set (0.01 sec) mysql> SELECT @@character_set_database, @@collation_database; +--------------------------+----------------------+ | @@character_set_database | @@collation_database | +--------------------------+----------------------+ | utf8mb4 | utf8mb4_bin | +--------------------------+----------------------+ 1 row in set (0.00 sec) mysql>
補足。 MySQL 8.0.1 以降では character_set_database と character_set_server の値はデフォルトで utf8mb4
- character_set_database
- character_set_server
補足。 MySQL 8.0.1 以降では collation-server のデフォルト値は utf8mb4_0900_ai_ci
- [mysqld] の collation-server を設定することで、 collation_database が設定される。
- collation_database
したがって、MySQL 8 では character_set_server の設定は不要ではあります。
明示的に揃えたいといった、今回のようなパターンでは、設定しておいて損はないでしょう。
補足。 character_set_system の値は utf8 固定
- character_set_system
The character set used by the server for storing identifiers. The value is always utf8.
おわりに
MySQL へ接続する Laravel 等のアプリで、文字コードの設定がおかしいために失敗するという、イラっとする系のミスをいつもしますので、メモいたしました。
もしかしたら、本ブログの過去の投稿で、全く同じ内容があるかもしれませんが、気にせずメモいたします。
次のページが参考になりました。ありがとうございます!
- [mysql] の default-character-set=utf8mb4 で変更される項目が 3 つもあるが、そのことが明記された公式ページ
- cnf ファイルでの文字セットおよび照合順序設定
- 文字コード系の確認方法
SELECT @@character_set_database, @@collation_database;
以上です。
「MySQL 8 のデフォルト文字セット系をすべて utf8mb4 にする cnf の書き方メモ」への3件の返信
[…] Config/database.phpの中身見てね ・文字コードが一致しない→MySQL 8 のデフォルト文字セット系をすべて utf8mb4 にする cnf の書き方メモ・・・おすすめはutf8mb4です。utf8でもいい感じ。統一しま […]
[…] 参考:MySQL 8 のデフォルト文字セット系をすべて utf8mb4 にする cnf の書き方メモ […]
[…] MySQL 8 のデフォルト文字セット系をすべて utf8mb4 にする cnf の書き方メモまとめ の default-character-set=utf8mb4 で変更される項目 ch…oki2a24.com […]