【備忘録】MySQL始めてデータベースに日本語いれようとしたらハマった

More than 5 years have passed since last update.

これ、たぶん既にすげー数の人がハマった問題だと思うんです、そしてQiita上にも大量に情報があると思いますが、念のため、メモ。

my.conf(my.ini)の設定をいじる

MySQLの入れ方(Macports/Homebrew/純正)によってこやつの場所は結構かわるかもしれません。

んで、このmy.confに次の項目を追加してください。(自分は/usr/local/mysql/に居ました)


my.conf

[client]

default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysqld]
character-set-server=utf8
#if you use mysql<5.5 use this
#default-character-set=utf8



ポイントは、mysqldだけdefault-character-setではない

てことです。

character-set-server=utf8

です。気をつけましょう。

さて、これで一度mysql.serverをrestartしていただきましたら、mysqlを立ち上げて

mysql>status

と打ってみましょう。

Server characterset:    utf8

Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8

ってなれいればおk!

さて、ここで問題。

あらかじめ作っておいたDBに以下のSQLを実行したらどうなりましょう。

INSERT INTO table1 

set title = "おっぱい"
,created = now();

Incorrect String ...

とでました。確かにおっぱいは不適切かもしれませんが...

ちょっとまてよcharsetがlatin1(デフォルト)の状態で作ったDBだから日本語だめなんじゃ....

とおもってもう一度DBをDropしたあと、もういちどつくりなおしたらとおりました。

御気をつけて!