mysql 字符集导致问题

1. 问题

线上插入表时报错:"Incorrect string value"

2.定位

某接口字段入参是 "Hello123😁54",插入的表结构如下(举例):

CREATE TABLE `student` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
  `name` varchar(64) DEFAULT NULL COMMENT '字段注释',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_sequence_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='表注释';

因MySQL字符集是utf8, utf8 编码最大字符长度为 3 字节,仅支持Unicode 中的基本多文种平面(BMP),而表情符等不在其中的unicode字符都无法使用。

3.解决

  1. MySQL utf8mb4 专门用来兼容四字节的unicode(mb4就是most bytes 4的)
  2. 前端限制输入此类字符。

参考链接:https://www.cnblogs.com/Courage129/p/14073693.html

posted @ 2025-02-28 17:24  执大象  阅读(17)  评论(0)    收藏  举报