rake db:createでキャラクタセット関連っぽいエラー
MacPortsでインストールしたMySQL5を使用。
rake db:create
で次のようなエラーが出た。
Couldn't create database for {"reconnect"=>false, "encoding"=>"utf8", "username"=>***, "adapter"=>"mysql", "database"=>"TestApp_development", "host"=>"localhost", "pool"=>5, "password"=>***, "socket"=>"/opt/local/var/run/mysql5/mysqld.sock"}, charset: utf8, collation: utf8_general_ci (if you set the charset manually, make sure you have a matching collation)
stick stackの記事とBACCASS Labsの記事を参考に、/etc/my.cnfを作成してデフォルトの文字セットを設定:
sudo cp /opt/local/share/mysql5/mysql/my-medium.cnf /etc/my.cnf sudo mate /etc/my.cnf
[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
collation-server=utf8_general_ci
character-set-server=utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
追記 @ 6/15
上を実行してもrake db:create
に失敗してた。というかそもそもmysqldが走ってなかった!かといってsudo launchctl start org.macports.mysql5
を実行しても、"なにそれ?"的なエラーが返ってきた。
仕方が無いので、MySQLを再インストール:
$ sudo port uninstall -f mysql5 $ sudo port clean mysql5 $ sudo port install mysql5 +server $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist $ sudo -u mysql mysql_install_db5 $ sudo launchctl start org.macports.mysql5
ps ax | grep my
してみると、どうやらプロセスは走ってるみたい。でもrake db:create
には同様のエラー。
やんばるくいなの記事を参考に、上記のものに加えてmy.cnfにさらに次を追加:
[mysqld]
skip-character-set-client-handshake
init-connect = SET NAMES utf8
そしてmysqldを再起動:
$ sudo launchctl stop org.macports.mysql5 $ sudo launchctl start org.macports.mysql5
これでやっとrake db:create
に成功!
ついでにエンジンをInnoDBに変更した:
[mysqld]
default-storage-engine = InnoDB
#そしてinno_から始まる行をuncomment