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\
|
+--------------------------+----------------------------------------------------
コメント (0)
コメントの投稿