MySQLで文字コードをutf8mb4に変更する方法




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にブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です