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

  • 36
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

これ、たぶん既にすげー数の人がハマった問題だと思うんです、そして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したあと、もういちどつくりなおしたらとおりました。
御気をつけて!