MySQL コマンドプロンプト での日本語入力

2010/03/05
★★

MySQL へコマンドプロンプトからの日本語インサート

MySQL をインストールすると、一緒にインストールされる "MySQL Command Line Client "。

テストの際は、気付かなかったが、INSERT 文で、日本語文字列をいれると、エラーが発生した。

ERROR 1366 (HY000): Incorrect string value: '\x8.....

キャラセットを utf-8 にしてるのに何故??

mysql> show variables like '%char%';
+--------------------------+---------------------------------------------------- -----+
| Variable_name | Value |
+--------------------------+---------------------------------------------------- -----+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\
|
+--------------------------+----------------------------------------------------

どうやら、プロンプトからの入力は、Shift-JIS なのに、UTF-8 で解釈しようとして、"Incorrect string value" と判断されてしまっているようだ。

以下の設定で、クライアント(プロンプト) からの入力は、Shift-JIS と定義する。

mysql> SET character_set_client = sjis;
Query OK, 0 rows affected (0.00 sec)

この設定をすると、コマンドプロンプトで、SQL 文にマルチバイト(日本語)を使用しても正常に動作する。

もちろん、プロンプト以外のクライアントにも影響する可能性があるので、設定を変更する場合は、自己責任でお願いしたい。

mysql> show variables like '%char%';
+--------------------------+---------------------------------------------------- -----+
| Variable_name | Value |
+--------------------------+---------------------------------------------------- -----+
| character_set_client | sjis|
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\
|
+--------------------------+----------------------------------------------------