MySQL Server にはサーバー文字セットとサーバー照合順序があります。 デフォルトでは、これらは utf8mb4
および utf8mb4_0900_ai_ci
ですが、サーバーの起動時にコマンドラインまたはオプションファイルで明示的に設定し、実行時に変更できます。
サーバー文字セットおよび照合順序は最初、mysqld の起動時に使用するオプションに依存します。 文字セットに --character-set-server
を使用できます。 これに加え、照合順序に --collation-server
を追加できます。 文字セットを指定しない場合は、--character-set-server=utf8mb4
と同じです。 文字セット (utf8mb4
など) のみを指定し、照合順序を指定しない場合は、utf8mb4_0900_ai_ci
が utf8mb4
のデフォルト照合順序であるため、--character-set-server=utf8mb4
--collation-server=utf8mb4_0900_ai_ci
と同じです。 したがって、次の 3 つのコマンドを実行した結果はいずれも同じになります。
mysqld
mysqld --character-set-server=utf8mb4
mysqld --character-set-server=utf8mb4 \
--collation-server=utf8mb4_0900_ai_ci
設定を変更する手段の 1 つは再コンパイルです。 ソースから構築するときに、デフォルトのサーバー文字セットおよび照合順序を変更するには、CMake の DEFAULT_CHARSET
および DEFAULT_COLLATION
オプションを使用します。 例:
cmake . -DDEFAULT_CHARSET=latin1
または:
cmake . -DDEFAULT_CHARSET=latin1 \
-DDEFAULT_COLLATION=latin1_german1_ci
mysqld と CMake の両方は、文字セットと照合順序の組み合わせが有効であることを検証します。 組み合わせが有効でない場合、各プログラムによってエラーメッセージが表示され、強制終了されます。
サーバー文字セットおよび照合順序は、データベース文字セットおよび照合順序が CREATE DATABASE
ステートメントで指定されていない場合にデフォルト値として使用されます。 これらにほかの用途はありません。
現在のサーバー文字セットおよび照合順序は、character_set_server
および collation_server
システム変数の値で判別できます。 これらの変数は実行時に変更できます。