MySQL 「DEFAULT_CHARACTER_SET」 の変更

mysqlでERROR 1366 (HY000): Incorrect string value が発生。

日本語が入ったレコードを登録しようとするとエラーが発生する。
上記エラーの原因を調査すると、文字コードエラーのようだ。
データベースの設定を確認。

$ mysql -umysqluser -p 
mysql> status 
-------------------------------------- 
Server characterset: utf8 
Db characterset: utf8 
Client characterset: utf8 
Conn characterset: utf8 
-------------------------------------- 

ここの charactereset は良さそう。
次は対象のデータベースをチェック。

mysql> use databasename 
mysql> status 
-------------------------------------- 
Server characterset: utf8 
Db characterset: latin1 
Client characterset: utf8 
Conn characterset: utf8 
-------------------------------------- 

Dbの設定が怪しい。。。
MySQL の characterset を変更。

# my.cnf を編集。

-------------------------------------- 
[client] 
default-character-set=utf8 

[mysqldump] 
default-character-set=utf8 

[mysql] 
default-character-set=utf8 
-------------------------------------- 

MySQL を再起動して設定を反映します。

あとは既存のデータベースの characterset を変更する。

mysql> alter database databasename default character set utf8 COLLATE utf8_general_ci;

すると、

mysql> status 
-------------------------------------- 
Server characterset: utf8 
Db characterset: utf8 
Client characterset: utf8 
Conn characterset: utf8 
-------------------------------------- 

変更されました。


table は一度、drop table .. してから作り直したら無事に日本語を登録することができました。