揮発性のメモ2

http://d.hatena.ne.jp/iww/

MariaDBの日本語の設定

設定

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 で、アルファベットの大文字小文字のみ無視する という意味