AWS Cloud9 + Rails + MySQLで絵文字を扱う
参考にしたのはこちら。
というわけで、MySQLの文字コードを確認するわけですが、そっちは既に「utf8mb4」でした。
でもrailsの方で文字コードを「utf8」にしていたので、rake:dbした時にutf8でテーブル作ってしまっていたようなので、これを修正します。
/config/database.ymlを以下のように設定
default: &default
adapter: mysql2
charset: utf8mb4
encoding: utf8mb4
collation: utf8mb4_unicode_ci
reconnect: false
pool: 5
host: localhost
次にMySQLでAlter tableをします。
alter table (テーブル名) convert to character set utf8mb4;
が、ここでエラー。
「Specified key was too long; max key length is 767 bytes」
ぐぐったら、こちらに原因と修正方法がありましたので、参考にしました。
「sudo vi /etc/my.conf」で以下を追加
innodb_file_format=Barracuda
innodb_file_format_max=Barracuda
innodb_file_per_table=1
innodb_large_prefix=1
「sudo /etc/init.d/mysqld restart」でMySQLを再起動
再びMySQLに入り、
alter table (テーブル名) ROW_FORMAT=DYNAMIC;
alter table (テーブル名) convert to character set utf8mb4;
これで文字コードがutf8mb4に変わり、絵文字が入ります。