記録として残しておきたいブログ

主にプログラミングについて書きます

MySQL 絵文字のデータを挿入できない

MySQL: 5.5.54-0+deb8u1 (Raspbian)

MySQLに絵文字を入れようと思うとutf8では入れられないらしい。utf8mb4という文字コードが用意されていて、それを使えば対応できるそうです。

MySQLのutf8は1文字3バイトとして扱っている。しかし、絵文字などは1文字4バイトになっているためデータを扱えない。


http://okamerin.com/nc/title/mysql_utf8mb.htm
MySQLの文字コードをutf8mb4にする - light log

my.cnfの設定

自分のmy.cnfは /etc/mysql/my.cnfにあった

クライアントとサーバーの文字コードを設定する

[client]
...
#default-character-set = utf8
default-character-set = utf8mb4   # utf8mb4に変更

[mysqld]
...
#character-set-server = utf8
character-set-server = utf8mb4   # utf8mb4に変更

データベースの文字コード設定

mysql> alter database databasename default character set utf8mb4;

テーブルの文字コードを設定

mysql> ALTER TABLE m_listener DEFAULT CHARACTER SET utf8mb4;
mysql> ALTER TABLE latest_comments DEFAULT CHARACTER SET utf8mb4;

列の文字コードの設定

mysql> ALTER TABLE m_listener MODIFY user_name VARCHAR(45) CHARACTER SET utf8mb4 NOT NULL;
mysql> ALTER TABLE latest_comments MODIFY message VARCHAR(360) CHARACTER SET utf8mb4 NOT NULL;


MySQLの再起動
sudo /etc/init.d/mysql restart