Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


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

MySQL Server にはサーバー文字セットとサーバー照合順序があります。これらは、コマンド行またはオプションファイルで、サーバーの起動時に設定し、実行時に変更できます。

サーバー文字セットおよび照合順序は最初、mysqld の起動時に使用するオプションに依存します。文字セットに --character-set-server を使用できます。これに加え、照合順序に --collation-server を追加できます。文字セットを指定しない場合は、--character-set-server=latin1 を指定した場合と同じになります。文字セット (たとえば latin1) だけを指定して照合順序を指定しない場合は、--character-set-server=latin1 --collation-server=latin1_swedish_ci を指定した場合と同じになります。これは latin1_swedish_cilatin1 のデフォルト照合順序であるためです。したがって、次の 3 つのコマンドを実行した結果はいずれも同じになります。

shell> mysqld
shell> mysqld --character-set-server=latin1
shell> mysqld --character-set-server=latin1 \
           --collation-server=latin1_swedish_ci

設定を変更する手段の 1 つは再コンパイルです。ソースから構築するときに、デフォルトのサーバー文字セットおよび照合順序を変更するには、CMakeDEFAULT_CHARSET および DEFAULT_COLLATION オプションを使用します。例:

shell> cmake . -DDEFAULT_CHARSET=latin1

または:

shell> cmake . -DDEFAULT_CHARSET=latin1 \
           -DDEFAULT_COLLATION=latin1_german1_ci

mysqldCMake の両方は、文字セットと照合順序の組み合わせが有効であることを検証します。組み合わせが有効でない場合、各プログラムによってエラーメッセージが表示され、強制終了されます。

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

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


User Comments
  Posted by time e.less on October 14, 2009
Please add the information about skip-character-set-client-handshake into every page that references server character set and collation.

I'm amazed this startup option is hidden so deep in the documentation, since it seems like many administrators who specify alternate character sets on startup would want the clients to use the server character sets when possible.

Here's an example for the [mysqld] section of your my.cnf:

> skip-character-set-client-handshake
> collation_server=utf8_unicode_ci
> character_set_server=utf8

  Posted by Dan Vashchilenko on June 28, 2012
e.less,

I suppose you mean to add this to your my.cnf:
...
[mysqld]
...
skip-character-set-client-handshake
collation-server=utf8_unicode_ci
character-set-server=utf8

This will actually force the server and the client to use UTF8.
Sign Up Login You must be logged in to post a comment.