Open2
[MariaDB] 文字セットと照合順序

utf8mb4_general_ci
を基本にして、必要な部分に対してutf8mb4_uca1400_ai_ci
を個別に設定するのがよい。
例えばデフォルト状態では「ハハ」と「ババ」がイコールになる。
MariaDB [my_database]> select 'ハハ' = 'ババ';
+---------------------+
| 'ハハ' = 'ババ' |
+---------------------+
| 1 |
+---------------------+
1 row in set (0.000 sec)

デフォルトではcharacter_set_collations
が
utf8mb3=utf8mb3_uca1400_ai_ci,ucs2=ucs2_uca1400_ai_ci,utf8mb4=utf8mb4_uca1400_ai_ci,utf16=utf16_uca1400_ai_ci,utf32=utf32_uca1400_ai_ci
になる。
これは使いにくいので空にする。
設定ファイルを追加。
/etc/mysql/conf.d/server.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
character_set_collations =
/etc/mysql/conf.d/client.cnf
[client]
default-character-set=utf8mb4
結果はこのようになる。
MariaDB [(none)]> show variables like 'collation_%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+----------------------+--------------------+
3 rows in set (0.002 sec)
MariaDB [(none)]> show variables like 'character_%';
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | utf8mb4 |
| character_set_collations | |
| 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/mariadb/charsets/ |
+--------------------------+------------------------------+
9 rows in set (0.004 sec)
「ハハ」と「ババ」区別されるようになる。
MariaDB [(none)]> select 'ハハ' = 'ババ';
+---------------------+
| 'ハハ' = 'ババ' |
+---------------------+
| 0 |
+---------------------+
1 row in set (0.001 sec)