MySQL 8.0 リファレンスマニュアル


10.15 文字セットの構成

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_systemcharacter_set_server または character_set_client と異なり、(データベースオブジェクト識別子またはカラム値、あるいはその両方として) 手動で文字を入力した場合、これらの文字はクライアントからの出力に間違って表示されたり、出力自体が間違って書式設定されたりすることがあります。 このような場合、--default-character-set=system_character_set を使用して MySQL クライアントを起動し、システム文字セットに一致するようにクライアント文字セットを設定すると、問題が修正されます。


関連キーワード:  文字, セット, 照合, 順序, 構成, character, リファレンス, サポート, プログラム, 追加