照合順序に関する設定を記述する
MariaDB で設定ファイルに対して文字コードに関する設定を行った場合に、設定した文字コードに対するデフォルトの照合順序を設定することができます。明示的に指定しない場合は、文字コード毎に決まっている照合順序が使用されます。ここでは MariaDB で設定ファイルにデフォルトの文字コードの設定を行った場合に、その文字コードに対するデフォルトの照合順序に関する設定を記述する方法について解説します。
(Last modified: )
utf8mb4に対するデフォルトの照合順序を確認する
現在 MariaDB のサーバで使用する文字コードは utf8mb4 に設定しています。まずは utf8mb4 のデフォルトの照合順序を確認します。 MariaDB コマンドラインツールを起動してください。
文字コード utf8mb4 で用意されている照合順序の一覧を取得します。次のようにコマンドを実行してください。
show collation where charset = 'utf8mb4';
Collation | Charset | Id | Default | Compiled | Sortlen |
---|---|---|---|---|---|
utf8mb4_general_ci | utf8mb4 | 45 | Yes | Yes | 1 |
utf8mb4_bin | utf8mb4 | 46 | Yes | 1 | |
utf8mb4_unicode_ci | utf8mb4 | 224 | Yes | 8 | |
utf8mb4_icelandic_ci | utf8mb4 | 225 | Yes | 8 | |
utf8mb4_latvian_ci | utf8mb4 | 226 | Yes | 8 | |
utf8mb4_romanian_ci | utf8mb4 | 227 | Yes | 8 | |
utf8mb4_slovenian_ci | utf8mb4 | 228 | Yes | 8 | |
utf8mb4_polish_ci | utf8mb4 | 229 | Yes | 8 | |
utf8mb4_estonian_ci | utf8mb4 | 230 | Yes | 8 | |
utf8mb4_spanish_ci | utf8mb4 | 231 | Yes | 8 | |
utf8mb4_swedish_ci | utf8mb4 | 232 | Yes | 8 | |
utf8mb4_turkish_ci | utf8mb4 | 233 | Yes | 8 | |
utf8mb4_czech_ci | utf8mb4 | 234 | Yes | 8 | |
utf8mb4_danish_ci | utf8mb4 | 235 | Yes | 8 | |
utf8mb4_lithuanian_ci | utf8mb4 | 236 | Yes | 8 | |
utf8mb4_slovak_ci | utf8mb4 | 237 | Yes | 8 | |
utf8mb4_spanish2_ci | utf8mb4 | 238 | Yes | 8 | |
utf8mb4_roman_ci | utf8mb4 | 239 | Yes | 8 | |
utf8mb4_persian_ci | utf8mb4 | 240 | Yes | 8 | |
utf8mb4_esperanto_ci | utf8mb4 | 241 | Yes | 8 | |
utf8mb4_hungarian_ci | utf8mb4 | 242 | Yes | 8 | |
utf8mb4_sinhala_ci | utf8mb4 | 243 | Yes | 8 | |
utf8mb4_german2_ci | utf8mb4 | 244 | Yes | 8 | |
utf8mb4_croatian_mysql561_ci | utf8mb4 | 245 | Yes | 8 | |
utf8mb4_unicode_520_ci | utf8mb4 | 246 | Yes | 8 | |
utf8mb4_vietnamese_ci | utf8mb4 | 247 | Yes | 8 | |
utf8mb4_croatian_ci | utf8mb4 | 608 | Yes | 8 | |
utf8mb4_myanmar_ci | utf8mb4 | 609 | Yes | 8 | |
utf8mb4_thai_520_w2 | utf8mb4 | 610 | Yes | 4 | |
utf8mb4_general_nopad_ci | utf8mb4 | 1069 | Yes | 1 | |
utf8mb4_nopad_bin | utf8mb4 | 1070 | Yes | 1 | |
utf8mb4_unicode_nopad_ci | utf8mb4 | 1248 | Yes | 8 | |
utf8mb4_unicode_520_nopad_ci | utf8mb4 | 1270 | Yes | 8 |
文字コード utf8mb4 に対するデフォルトの照合順序は utf8mb4_general_ci になっています。
デフォルトの照合順序が使用されるか確認する
MariaDB のデフォルトの照合順序については設定ファイルである my.ini ファイルで設定します。 [mariadbd] グループで collation-server に対して値を設定します。
[mariadbd] character-set-server=文字コード collation-server=照合順序
現在 my.ini ファイルでは character-set-server=utf8mb4 は設定されていますが collation-server については何も設定されていません。そのため、デフォルトの照合順序は utf8mb4_general_ci となります。
[mariadbd] character-set-server=utf8mb4
データベースを作成するとき、明示的に文字セットと照合順序を指定した場合はその文字セットと照合順序が使用されます。文字セットだけを指定した場合は、その文字セットに対するデフォルトの照合順序が my.ini の設定に関わらず使用されます(例えば文字セットが utf8mb4 の場合、照合順序は collation-server の設定に関係なく必ず utf8mb4_0900_ai_ci になります)。文字セットと照合順序を両方とも省略した場合、 my.ini で設定したデフォルトの文字セットとデフォルトの照合順序が使用されます。
それでは実際にデータベースを作成してみます。作成するときに文字セットおよび照合順序は指定しません。
create database mytest;
作成したデータベースの文字セットと照合順序を確認します。
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mytest';
文字セットが utf8mb4 、照合順序が utf8mb4_general_ci に設定されていることが確認できました。
デフォルトの照合順序を変更する
my.ini に設定を追加してデフォルトの文字セットを変更します。 my.ini ファイルの [mariadbd] グループの中の collation-server オプションに対する値を utf8mb4_bin に変更してください。
[mariadbd] character-set-server=utf8mb4 collation-server=utf8mb4_bin
設定ファイルを保存し、 MariaDB サーバを再起動してください。これで設定変更は完了です。
それでは文字セットと照合順序を指定せずにデータベースを作成します。
create database mytest;
作成したデータベースの文字セットと照合順序を確認します。
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mytest';
データベースの照合順序が my.ini でデフォルトの照合順序として設定した utf8mb4_bin に設定されていることが確認できました。
データベース作成時に文字コードだけ指定した場合
データベースを作成するときに文字コードだけ設定した場合は、 my.ini でその文字コードに対するデフォルトの照合順序が設定されていても使用されず、文字コードに対する元々のデフォルトの照合順序が設定されますのでご注意ください。
実際に my.ini で collation-server=utf8mb4_bin が設定されている状態で文字コードだけを指定してデータベースを作成してみます。
create database mytest character set utf8mb4;
作成したデータベースの文字セットと照合順序を確認します。
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mytest';
データベースの照合順序が my.ini で設定したデフォルトの照合順序とは異なり、文字コード utf8mb4 の本来のでデフォルト照合順序である utf8mb4_general_ci が設定されました。
-- --
MariaDB で設定ファイルにデフォルトの文字コードの設定を行った場合に、その文字コードに対するデフォルトの照合順序に関する設定を記述する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。