0
点赞
收藏
分享

微信扫一扫

ansible的清单文件

王老师说 2024-07-24 阅读 36

背景

生产环境插入数据报错:

java.sql.SQLException: Incorrect string value: '\xF0\xAC\xB1\x96' for column 'answer' at row 1

设置answer字段值为 “𬱖”出现错误
生僻字设置出错;

排查

编码

查看库表属性:

ENGINE InnoDB AUTO_INCREMENT =1479001 DEFAULT CHARSET utf8 ROW_FORMAT DYNAMIO
utf8

总而言之,utf-8 只支持 3 个字节的字符;
如果是超过 4 个字节,那么就需要使用 utf8mb4 (max byte 4 ):加强版的 utf8 来存储

生僻字

查看生僻字占用的字节:
在这里插入图片描述
4 字节,显然 utf8 是不满足的

解决

提交 sql:

alter table qt_check_answer default  CHARACTER SET utf8mb4

alt 之后还是报错;
查看库表:
在这里插入图片描述
表级别的设置更新了,但是字段还没有更新;
复现一下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结论

此时更新字段级别的编码类型:解决

结论:MySQL编码存在字段级别的设置,生僻字需要字段级别的编码支持

举报

相关推荐

0 条评论