MySQLの文字コード関連のシステム変数について。
character_set_system "indentifiers" (テーブル名とかカラム名?) を格納するのに使われる。 utf8で 固定。 character_set_server character_set_database のデフォルト値に影響する。 character_set_database CREATE DATABASE で文字コードが指定されなかった場合、database の文字コー ドはこれになる。 character_set_connection の値に影響する。(後述) character_set_client クライアントから渡された SQL 文はこの文字コードであると解釈される。 character_set_connection キャラクタセットイントロデューサ (例えば『_ujis'ほげ'』)が省略された SQL 文中の文字列リテラルはこの文字コードであると解釈される。 character_set_results サーバーがクライアントに返す結果をこの文字コードに変換する。 この変数を NULL にセットすると、結果に対する文字コード変換をしないよ うにできる。
これらのシステム変数を変更する際は mysql>SET character_set_client=ujis ←ujisにする場合 などがある。 個別に SET character_set_client charset_name などとする以外の制御方法。 SET CHARACTER SET charset_name → cs_client charset_name cs_connection (cs_databaseの値) cs_results charset_name SET CHARACTER SET charset_name を実行すると、cs_client と cs_connection の値が charset_name になり、cs_results の値が cs_database の値と同じになる。 SET NAMES 'charset_name' → cs_client charset_name cs_connection charset_name cs_results charset_name mysql --defalt-character-set charset_name → cs_client charset_name cs_connection charset_name cs_results charset_name mysqld --defalt-character-set charset_name → cs_database charset_name cs_server charset_name