結論: まだできてない。めんどくさいから mysql2 のutf8mb4 対応のアップデートを待つ
Amazon RDS と Herokuで utf8 4byte(iPhoneの絵文字とか)を取り扱おうと思って試行錯誤したログです。
- Amazon RDS Toolkit が utf8mb4 を受け付けない
- HerokuからAmazonRDSにutf8でしか接続出来ない(mysql2の現バージョンの仕様)
これが今日戦って疲れた壁。1はもうどうしようも。。。 普通にHerokuからRails3でrakeで突っ込んでいけばutf8なdbが出来たりする。 utf8mb4では現状突っ込んでいけない。 RDSのMySQLは5.5を選択しておけば、utf8mb4は問題なく使える。 ただ、default character setはmy.cnfを変えられない以上変えられないので、 create database するときに指定すればたぶんおk
なので、RDS Toolkitの件は目を瞑れる
つづいて、Rails3からMySQL5.5 utf8mb4に繋げないけんだけども、 Amazon RDSのプラグインの設定(接続先)を下記のようにしてみた。 mysql://user:pass@rdshostname.amazonaws.com/databasename?encoding=utf8mb4
これで行けるかと思ったけど、当然、gemsのmysql2がまだutf8mb4に対応していないので、 2012-03-24T13:02:41+00:00 app: Mysql2::Error (Can’t initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)):
こうなった。まぁ、当然。 というわけで、Gemfileのmysql2を、有志が書いたutf8mb4に対応した物に書き換えてみた。
gem ‘mysql2’, :git => ‘git://github.com/tmtm/mysql2.git’, :branch => ‘utf8mb4’
これで勝つる!ローカルではbundle install出来た。 herokuにpushしてみた。出来た。でもさっきと同じエラー heroku run bundle install してみた。出来た。でもさっきと同じエラー うーん。その他 heroku run bundle update とか適当うってみたがだめ。 heroku run gem list したらmysql2見つからんし。しらんし。heroku runでうつやつって自分の環境を見に行ってるわけじゃないのか…?
というわけで、一旦放置することにした\(^o^)/ 放置の理由はそう、もうすぐmysql2が公式にutf8mb4に対応しそうだから mysql2のレポジトリの管理者なbrianmarioさんが release new version to support utf8mb4 というIssuesに対して 9 days ago にcommentしていて、その内容が 「sorry, will try to get a release out soon」であるからである。
https://github.com/brianmario/mysql2/issues/249
今日俺が頑張っても、明日公式対応されたら、なんか涙目になりそうだ。 だから諦めた\(^o^)/
でも、いつリリースされるのか分からないし、 解決方法分かる人いたら教えて欲しいです。。。