【諦めた\(^o^)/】Rails3 x Heroku x AmazonRDS(MySQL5.5) utf8 4バイト

Pocket

結論: まだできてない。めんどくさいから mysql2 のutf8mb4 対応のアップデートを待つ

Amazon RDS と Herokuで utf8 4byte(iPhoneの絵文字とか)を取り扱おうと思って試行錯誤したログです。

  1. Amazon RDS Toolkit が utf8mb4 を受け付けない
  2. 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[web.1]: 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^)/

 

でも、いつリリースされるのか分からないし、
解決方法分かる人いたら教えて欲しいです。。。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です