#
ドキュメント

Document

自分のための備忘録です。

文字セット

文字セットとは、記号とエンコーディングのセットです。 照合順序とは、文字セット内の文字を比較するためのルールを集めたものです。

10.1 一般の文字セットおよび照合順序

ドキュメント

データベースサーバーおよびデータベースの文字セット

サーバー文字セットおよび照合順序

パラメータ

  • character_set_server
  • collation_server

ドキュメント

10.3.2 サーバー文字セットおよび照合順序

内容

サーバー文字セットおよび照合順序は、データベース文字セットおよび照合順序が CREATE DATABASE ステートメントで指定されていない場合にデフォルト値として使用されます。 これらにほかの用途はありません。

現在のサーバー文字セットおよび照合順序は、character_set_server および collation_server システム変数の値で判別できます。 これらの変数は実行時に変更できます。

サンプル

show variables like '%_server%';
+---------------------------------+-----------------+
| Variable_name                   | Value           |
+---------------------------------+-----------------+
| aurora_server_id                | orthrus-rds     |
| character_set_server            | utf8            |    <-----
| collation_server                | utf8_general_ci |    <-----
| innodb_ft_server_stopword_table |                 |
+---------------------------------+-----------------+

データベース文字セットおよび照合順序

パラメータ

  • character_set_database
  • collation_database

ドキュメント

10.3.3 データベース文字セットおよび照合順序

内容

デフォルトのデータベースに対する文字セットと照合順序は、character_set_database および collation_database システム変数の値から判別できます。 デフォルトのデータベースが変わるたびに、サーバーはこれらの変数を設定します。 デフォルトのデータベースがない場合、変数は、character_set_server および collation_server という対応するサーバーレベルのシステム変数と同値になります。

サンプル

show variables like '%_database%';
+------------------------+-----------------+
| Variable_name          | Value           |
+------------------------+-----------------+
| character_set_database | utf8            |    <-----
| collation_database     | utf8_general_ci |    <-----
| skip_show_database     | OFF             |
+------------------------+-----------------+

サーバー文字セットとデータベース文字セットの違い

character_set_databaseとcharacter_set_serverの違い【MySQL】

クライアントとサーバー間の通信の文字セット

オプション

  • character_set_client
  • character_set_connection
  • character_set_results
  • collation_connection

collation_connection は character_set_client, character_set_results, character_set_connection の値によって自動で設定される。 my.cnfでは設定できない。 collation_connectionをmy.cnfに設定するとエラーで起動できない。

ref. https://dev.mysql.com/doc/refman/8.0/ja/charset-connection.html

ドキュメント

接続文字セットおよび照合順序

内容

その他の文字セットおよび照合順序システム変数は、クライアントとサーバー間の接続のトラフィックの処理に関わっています。 すべてのクライアントには、セッション固有の接続関連の文字セットおよび照合順序システム変数があります。 これらのセッションシステム変数値は接続時に初期化されますが、セッション内で変更できます。

サンプル

文字セットおよび照合順序( Collation )を設定する。 例は文字セットを utf8mb4 を設定する。

# my.cnf
[mysqld]
# 必須
character_set_server=utf8mb4
collation_server=utf8mb4_0900_ai_ci
# 以下は念のため設定
character_set_client=utf8mb4
character_set_connection=utf8mb4
character_set_database=utf8mb4
character_set_results=utf8mb4

[client]
default-character-set=utf8mb4

※ character_set_client、character_set_connection、character_set_database、character_set_results はデフォルトで utf8mb4 。念の為に設定しておくと安心。
※ 文字セットの照合順序を表す collation_server=utf8mb4_0900_ai_ci を設定する。
※ mysqld コマンドのオプションとして指定するときは character_set_server は character-set-server とハイフンになる(逆に言うと my.cnf で指定する場合は character_set_server とアンダースコアを使用する)。

上記 my.cnf の character 関連の設定値。

show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

照合順序関連の設定値。

show variables like '%collation%';
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_bin        |
| collation_server     | utf8mb4_bin        |
+----------------------+--------------------+