2006年04月12日
_ [MySQL] mysqlコマンドで文字コードを指定する。
mysqlコマンドで日本語データをinsertしようとすると、以下のようにエラーになってしまう。
C:\>mysql -h localhost -u user -p mysql> use test; Database changed mysql> create table test(name varchar(30)); Query OK, 0 rows affected (0.13 sec) mysql> insert into test values('ほげ'); ERROR 1406 (22001): Data too long for column 'name' at row 1
これは、文字コードがutf8になってしまっているから起こるようだ。
C:\>mysql --help (...略...) Variables (--variable-name=value) and boolean options {FALSE|TRUE} Value (after reading options) --------------------------------- ----------------------------- (...略...) default-character-set utf8
解決するには、--default-character-set=sjisとするか、set names sjisとすればよい。
C:\>mysql -h localhost -u user -p --default-character-set=sjis mysql> use test; Database changed mysql> create table test(name varchar(30)); Query OK, 0 rows affected (0.13 sec) mysql> insert into test values('ほげ'); Query OK, 1 row affected (0.03 sec) mysql> select * from test; +------+ | name | +------+ | ほげ | +------+ 1 row in set (0.00 sec)
もしくは
C:\>mysql -h localhost -u user -p mysql> use test; Database changed mysql> set names sjis; Query OK, 0 rows affected (0.00 sec) mysql> create table test(name varchar(30)); Query OK, 0 rows affected (0.13 sec) mysql> insert into test values('ほげ'); Query OK, 1 row affected (0.03 sec) mysql> select * from test; +------+ | name | +------+ | ほげ | +------+ 1 row in set (0.00 sec)
_ ヽ(´ー`)ノ [助かった。 情報ありがとう!]