utf8mb4とは?
絵文字はutf-8のエンコーディングでは対応できないのでutf8を拡張したutf8mb4を使わなければいけません。MySQLのデフォルト設定ではutf8なのでこの設定を変えてあげます。
mysql> show variables like 'character%'; +--------------------------+--------------------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/Cellar/mysql/5.7.18_1/share/mysql/charsets/ | +--------------------------+--------------------------------------------------------+ 8 rows in set (0.00 sec)
my.cnfの変更
エンコーディング設定を変えるためにmy.cnfを変更します。
[mysqld] #character-set-server = utf8 character-set-server = utf8mb4 [client] #default-character-set = utf8 default-character-set = utf8mb4
変更後はMySQLを再起動します。brewでインストールした場合は下記で再起動します。
mysql.server restart
再起動後に設定を確認します。そのとき一度mysqlからexitしておかないと新しい設定が確認できません。自分はこの確認に手こずってしまったので気をつけてください。
mysql> show variables like 'character%'; +--------------------------+--------------------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/local/Cellar/mysql/5.7.18_1/share/mysql/charsets/ | +--------------------------+--------------------------------------------------------+ 8 rows in set (0.00 sec)
上記設定になっていれば今後作成するデータベース、テーブルはutf8mb4のエンコーディングに対応したものになっているので絵文字を扱えるようになります。
下記リンクのデータベースに関連する記事も是非読んでみて下さい。
The following two tabs change content below.
髙妻智一
2013年CyberAgent新卒入社
スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。
2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す