データベースでつまずいた
Cakephpの勉強を始めてみたら
意外とデータベースの設定でつまずいた。
というか、ただ文字コードを変更していなかっただけだけどw
cakephpでブログを作るチュートリアルに沿って、
データベースにブログの記事を挿入しようとしたときに、
mysql> INSERT INTO posts (title,body,created) VALUES ('タイトルの逆襲', 'こ りゃ本当にわくわくする!うそ。', NOW()); ERROR 1366 (HY000): Incorrect string value: '\xE3\x82\xBF\xE3\x82\xA4...' for column 'title' at row 1
こんな感じのエラーが出てきた。
調べてみると、どうやら文字コードがあってないらしいので、
show variablesで調べてみると
mysql> show variables like 'char%'; +--------------------------+-----------------------------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.6.10-osx10.7-x86/share/charsets/ | +--------------------------+-----------------------------------------------------+
こんな感じになってた。
データベースのエンコードがlatin1になってたのが原因だったので、
これを
set global character_set_server = utf8
というコマンドを打ってutf-8に変更した。
mysql> set global character_set_server = utf8; Query OK, 0 rows affected (0.00 sec) mysql> set global character_set_database = utf8; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'char%'; +--------------------------+-----------------------------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.6.10-osx10.7-x86/share/charsets/ | +--------------------------+-----------------------------------------------------+
どうやら、問題のデータベースは既に文字コードが設定されてるせいか反映されていない。
後から変更しても、既にあるものには反映されないようなので
どうしようか考えていろいろみました。
データベースの文字エンコーディングを変更する - HHeLiBeXの日記 正道編
MySQL の文字コード設定を後から変えるには 民芸的プログラミング 〜ソフトウェア開発日記〜/ウェブリブログ
この辺をみて、コマンド一発で変えちゃえ☆みたいな簡単な話じゃなかったので
とりあえず、一度データベースごとdropしてもう一回作り直しました!
これでやっとまともにcakephpの開発ができる環境がそろいました!
めでたしめでたし