掲示板アプリ作っていたら、
iPhoneの絵文字を入力すると500エラーとなってしまったので、
対応したメモ
databaseはMySQLを使用しています。
通常utf8を使用していたのですが、
どうもiOS5の絵文字は4バイトのUTF-8で記述されているので、「utf8mb4」を使わないといけないらしい。
database.ymlの設定
database.yml
default: &default
adapter: mysql2
charset: utf8mb4
encoding: utf8mb4
collation: utf8mb4_general_ci
stringの最大文字列を191文字へ変更
これで、MySQLでは「utf8mb4」を使うことになったのですが、
rake db:migrate でエラーがでてしまいました。
Mysql2::Error: Specified key was too long; max key length is 767 bytes: CREATE UNIQUE INDEX
utf8が4バイトになったため、
Stringの最大が255だと767バイトを超えてしまうのでした。
そのため、
limitでstringは最大を191にすることで、
対応できました。
config/initializers/mysqlpls.rb
require 'active_record/connection_adapters/abstract_mysql_adapter'
module ActiveRecord
module ConnectionAdapters
class AbstractMysqlAdapter
NATIVE_DATABASE_TYPES[:string] = { :name => "varchar", :limit => 191 }
end
end
end