MySQLのencoding

どうにも腑に落ちないんだけど、database.ymlでdevelopmentにはencoding: utf8を指定して正常に動作しています。しかし、testにencoding: utf8を指定すると、rake testでエラー出まくり。

Mysql::Error: #HY000Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

調べてみるとschema.rbから作成されるtestのDBのテーブルのcharsetがlatin1になっちゃってました。なんでやねーん!


で、database.ymlのtestのencoding: utf8をコメントアウトしてみると、正常にテストもパスします。テーブルのcharsetもutf8に・・・うお、なってねえ。latin1っすわ。マジで?developmentの方のcharsetはutf8になっているのに・・・・。そうか、latin1同士で接続しているからテストもパスするのか。


でもtestもdevelopmentもdefault character set utf8って指定してcreate databaseしたんだけどなー。うーん、なんで?