15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RailsでiPhoneの絵文字対応する方法

Posted at

掲示板アプリ作っていたら、
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
15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?