[1366 Incorrect string value]エラーが発生!絵文字🦐に注意!

備忘録

どうもmizukiです。Twitterのツイートを取得してデータベースに入れる機能を作っていて20日ぶりに動かしたら[1366 Incorrect string value]エラーを吐いていました。原因は取得したツイートに入っている絵文字🦐がutf8だと扱えない事でした。テストの時には偶然絵文字無しのツイートを拾っていたのでエラーがスルーされていました。

対処方法

照合順序(Collation)を絵文字🦐を使える『utf8mb4』を指定すれば直ります。
テーブルやカラムによってバラバラだと、WHEREなどの結果に変わってくるのでなるべく統一した方が良いです。

私は『utf8mb4_general_ci』を指定しました。

まとめ

絵文字がかなり使われているのでデフォルトで「utf8mb4」を扱っても良さそうです。会社でも照合順序を2バイト文字が打てない物が設定されていて微妙にハマったので、設計の時点で固めておくと時間短縮になると思いました。

会社の基幹システムで絵文字使ってエラーが出るかテストしてみよう(ゲス顔)

参考

▼絵文字のエラーについて解説

https://qiita.com/edisonthk/items/03d7023fb53006a7c83e

▼utf8mb4のCollationについて解説、設計する人は把握しておいた方が良さそうです。

MySQLの文字コードとCollation - Qiita
散々、書かれていることで、何度もでてくる話なので、自分用にまとめ。 文字コード まずMySQLの文字コードですが絵文字のみでなく、JIS X 0213の第3・4水準漢字の 一部にUTF8 4バイト文字があり(まぁまず使われないと...

コメント