MySQL サーバーには、コンパイルされたデフォルトの文字セットと照合順序があります。 これらのデフォルトを変更するには、サーバーの起動時に --character-set-server
および --collation-server
オプションを使用します。 セクション5.1.7「サーバーコマンドオプション」を参照してください。 照合順序は、デフォルト文字セットの正当な照合順序である必要があります。 各文字セットで使用可能な照合順序を確認するには、SHOW COLLATION
ステートメントを使用するか、INFORMATION_SCHEMA
COLLATIONS
テーブルをクエリーします。
バイナリにコンパイルされない文字セットを使用しようとすると、次の問題が生じることがあります。
-
プログラムで誤ったパスを使用して文字セットが格納されている場所 (通常は、MySQL インストールディレクトリの下の
share/mysql/charsets
またはshare/charsets
ディレクトリ) を判別する場合は、プログラムの実行時に--character-sets-dir
オプションを使用して修正できます。 たとえば、MySQL クライアントプログラムで使用されるディレクトリを指定するには、オプションファイルの[client]
グループに記述します。 ここに挙げる例は、それぞれ Unix または Windows の場合に設定がどのようになるかを示します。[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets [client] character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
-
文字セットが動的にロードできない複雑な文字セットの場合は、文字セットをサポートしてプログラムを再コンパイルする必要があります。
Unicode 文字セットの場合、LDML 表記を使用することによって、再コンパイルせずに照合順序を定義できます。 セクション10.14.4「Unicode 文字セットへの UCA 照合順序の追加」を参照してください。
文字セットが動的文字セットであるが、その構成ファイルがない場合は、新しい MySQL ディストリビューションから文字セットの構成ファイルをインストールする必要があります。
-
文字セットインデックスファイル (
Index.xml
) に文字セットの名前が含まれていない場合は、次のエラーメッセージが表示されます:Character set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
この問題を解決するには、新しいインデックスファイルを取得するか、欠落している文字セットの名前を手動で現在のファイルに追加する必要があります。
次のようにしてクライアントプログラムに強制的に特定の文字セットを使用させることができます。
[client]
default-character-set=charset_name
これは通常は不要です。 ただし、character_set_system
が character_set_server
または character_set_client
と異なり、(データベースオブジェクト識別子またはカラム値、あるいはその両方として) 手動で文字を入力した場合、これらの文字はクライアントからの出力に間違って表示されたり、出力自体が間違って書式設定されたりすることがあります。 このような場合、--default-character-set=
を使用して MySQL クライアントを起動し、システム文字セットに一致するようにクライアント文字セットを設定すると、問題が修正されます。
system_character_set