設定
MariaDB 10.5 ではこんな感じだった。
変数名 | デフォルト値 | 備考 |
---|---|---|
character_set_client | utf8 | ★1 クライアントの文字コード |
character_set_connection | utf8 | ★1 |
character_set_database | latin1 | ☆A DBの文字コード 設定ファイルの対象ではない |
character_set_filesystem | binary | ファイル名で使う文字コード LOAD DATA とか |
character_set_results | utf8 | ★1 |
character_set_server | latin1 | ★2 サーバの文字コード |
character_set_system | utf8 | システム自体の文字コード |
collation_connection | utf8_general_ci | ★1 |
collation_database | latin1_swedish_ci | ☆A |
collation_server | latin1_swedish_ci | ★2 |
DBの文字コードは、DBごとに CREATE DATABASE とか ALTER DATABASE で設定する。
何も指定しないでDBつくると latin1 になるっぽい。あと mysql 自体も latin1 だった
設定ファイルの書き方
default-character-set でクライアントの文字コード、照合順序を一括で設定できる
character-set-server でサーバの文字コード、照合順序を一括で設定できる
# /etc/my.cnf.d/hogehoge.cnf #[mysql] [client-mariadb] default-character-set = utf8mb4 #[mysqld] [mariadb] character-set-server = utf8mb4
確認手段
値が設定できてるかどうかは次のクエリで確認する
show variables like '%char%'; show variables like '%coll%';
utf8 と utf8mb4 の違い
utf8 は utfmb3 と同義で、3バイト長までの可変長を意味している。
utf8mb4 は4バイト長まで。今後新規に作るのは全部 utf8mb4 にしとけばいい。
照合順序
WHERE節の文字列比較とかで使う比較のルールのこと。
utf8_general_ci は UTF8 で、アルファベットの大文字小文字のみ無視する という意味