MySQL で絵文字を扱うのに必要な utf8mb4 の設定方法です。
新規にデータベースを構築する場合向けです。
Rails 4.2.6 で確認しています。
データベースの設定
config/database.yml
default: &default adapter: mysql2 encoding: utf8mb4 collation: utf8mb4_bin
encoding を utf8mb4 に、collation を utf8mb4_bin にします。
collation を utf8mb4_bin にすることで、「ハハ」と「パパ」などが同一のものとして扱われるのを防ぎます。
ただし、「A」と「a」などのアルファベット大文字・小文字も別のものとして扱われるようになります。
string の文字数を変更する
インデックス長の関係で、string が VARCHAR(255) ではなく VARCHAR(191) になるようにします。
追記(2017/3/21 15:05):
MySQL 5.7.7 以降では、以下の設定は不要です。( 参考: MySQL 5.7 と絵文字(ちょこっと Rails) - TMD45'β'LOG!!! )
追記ここまで
config/initializers/mysql_utf8mb4_fix.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