MySQLのutf8mb4対応まとめ

主に絵文字(4バイト文字)を格納する際にMySQL標準のutf8では対応できず、utf8mb4を使用する必要があるがその対応方法がMySQLのバージョンによって多少異なるので対応方法のまとめ。

基本的にゴールは同じだがMySQL5.7.7以降character-setでutf8mb4に指定する以外の部分はデフォルト値になったので変更する必要がなくなった。

  • character-set周りをutf8mb4に変更
  • innodb_large_prefixを有効
  • innodb_file_format=Barracudaに変更
  • ROW_FORMAT=DINAMICに変更

バージョンごとの動作についてはこちらのページのおかげで理解できた。感謝。

Rails側のdatabase.ymlでの指定についても上記サイトに記載されているが一番厳格なcollationを指定(utf8mb4_bin)すれば、
一番厳格に判定してくれるので良いと思うが用途に応じて選択すると良い。

Amazon AuroraのMySQL互換はMySQL5.6がベースになっているので5.7.7ではデフォルトになった設定がデフォルトになってないので対応が必要になった。

詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)

詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)