MySQL5.7插入emoji错误的解决

数据库 mysql 5.7.26
创建java项目数据库时的字符集utf8,校对集utf8_general_ci

mysql 5.5.3版本之后支持了存储4个字节的utf8字符,字符集为utf8mb4,
当字符串中有特殊字符(如emoji表情符号,以及其他凡是转成utf8要占用4字节的字符),就会有问题,会报错Incorrect string value: ‘\xF0\x9F\x91\x93\xF0\x9F…’ for column ‘xxx’ at row 1

用户表的nickname字段错emoji表情,报错了,以前项目使用的emoji-java转码方案,这次想换个个优雅一点儿的方法.
修改表字段nickname 的字符集位utf8mb4 校对集为utf8mb4_unicode_ci

ALTER TABLE 用户表 MODIFY  昵称字段  VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

操作用户表需要保存表情的字段时,请插入sql语句SET NAMES utf8mb4;,以下是mybatis的xml代码示例

	<insert id="insert">
		SET NAMES utf8mb4;
		INSERT INTO web_user ( id, nickname, qq_id, istatus, del_flag, create_date, update_date )
		VALUES ( #{id}, #{nickname}, #{qqId}, #{istatus}, #{DEL_FLAG_NORMAL}, #{createDate}, #{updateDate} )
	</insert>

如果还不行不行,点击这里 查看本人参考的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值