エラー 1366 Incorrect string value: '\xF0\x9F\x92\xA2" ...' for column


今日はこの絵文字「💢」のおかげで面白いものを知ってしまいました。それはutf8mb4です。

utf8のMySQLデータベースに上記の絵文字を保存しようとしたら、次のエラーが発生しました。

調べたら理由はMySQLのutf8は3バイトまでしか対応していません。しかし、上記の絵文字は4バイトもあります。3バイトまでしか対応していないデータベースに4バイトの絵文字を保存しようとしていたので、エラーが発生しました。

ネットで調べたらMySQL5.5以上からutf8mb4という4バイトのutf8に対応する文字コードがありまして、さっそくshow character setで確認したら

本当に4バイトまで対応しているutf8mb4がありました!!

データベース、テーブルとconnection driverが全部utf8からutf8mb4に切り替えたら上記のエラーが解消しました。