MYSQL数据库与Emoji表情的故事

时间:2023-03-09 01:24:53
MYSQL数据库与Emoji表情的故事

问题背景

手机上众多输入法和键盘支持输入 emoji 表情,给早期设计的程序造成了越来越多的干扰。

  1. 移动端购物的流行,2018 年 “双十一”全网移动端交易达到 93.6%
  2. 微信年度报告里 80 后爱用的“龇牙”表情,早在 2017 年 QQ 发布的统计数据就超过 303 亿。

最近我们团队就遇到了一个线上问题,就是由于用户下单备注使用 emoji 表情引起的问题。

通过解决这个问题,主要了解下面 3 个方面内容:

  1. Mysql 编码概念
  2. Mysql“乱码”是怎么来的:字符编码转换
  3. Emoji 在 Mysql 使用问题

问题分析

昨天突然接到业务反馈,监控告警了,有几个订单卡单了,一直在某个系统里面没有推到下游,最终导致错过了配送时间。

查询日志中心,ES 搜索到了某系统 Job 拉数据保存数据库的异常信息。

展开详细日志发现了关键日志:

ERROR 1366: Incorrect string value: '\xF0\x9F\x99\x8F...' for column 'Remark' at row 2。

试图将一个 4 字节的字符写入到一个 3 字节的列 Remark, 当然是报错了。

然后我们看了一下用户的备注 Remark 信息,**上午家里没人,请下午送,谢谢