前言
- 操作系统:linux
- 数据库版本: 8.0.27
- 查看版本命令:
mysql -uroot -p
登录成功后就可以看到
报错信息:
incorrect string value: '\\xf0\\x9f\\x98\\x82' for column 'content' at row 1
在网上查询得知:在用mysql进行表情符号存储时,会报错,这是由于emoji表情是4个字节,而mysql的utf-8编码最多是3个字节,所以在进行表情符号插入的时候会插入不进去 。那么此时应该通过修改mysql编码为utf8mb4来解决该问题 。
但是我在sql表创建时已经想到了这一点并且相关字段也是utf8mb4,为什么还会报错
排查解决通过多方查询和尝试,发现只要修改mysql配置信息就可以解决问题
【MySql存储表情报错的排查解决】1.在linux下找到mysql的配置文件
my.cnf
(window为my.ini),如果找不到可以直接查询$ find / -name my.cnf2.在
my.cnf
修改编辑[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = falsecharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect='set names utf8mb4'3.重启mysql服务
$ service mysqld restart
mysql变量配置扩展1.
character_set_client
主要用来设置客户端使用的字符集 。2.
character_set_connection
主要用来设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置 。3.
character_set_database
主要用来设置默认创建数据库的编码格式,如果在创建数据库时没有设置编码格式,就按照这个格式设置 。4.
character_set_filesystem
文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem,默认binary是不做任何转换的 。5.
character_set_results
数据库给客户端返回时使用的编码格式,如果没有指明,使用服务器默认的编码格式 。6.
character_set_server
服务器安装时指定的默认编码格式,这个变量建议由系统自己管理,不要人为定义 。7.
character_set_system
数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式 。8.
character_sets_dir
这个变量是字符集安装的目录 。补充在实际开发中,我们应该提前约定好字符集,而不是后面随意更改,随意更改可能会影响到原有数据显示问题;可以更改mysql默认配置,将其设为utf8mb4具体操作如下:
1、修改mysql配置文件(windows:my.ini;linux:my.cnf)
[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]#character-set-server=utf8 这行注释掉character-set-client-handshake = falsecharacter-set-server = utf8mb4collation-server = utf8mb4_general_ciinit_connect = 'set names utf8mb4'2、重启mysql
service mysql restart3、查看是否修改成功
show variables where variable_name like 'character%' or variable_name like 'collation%';下图红框内为utf8mb4信息即为修改成功
总结到此这篇关于mysql存储表情报错排查解决的文章就介绍到这了,更多相关mysql存储表情报错内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
推荐阅读
- mysql和oracle默认排序的方法 – 不指定order by
- 乳房一大一小怎么办
- MySql获取当前时间并转换成字符串的实现
- exists Mysql子查询关键字的使用方式
- 卵泡不破是怎么回事
- 微信2022经典的哲理签名的句子
- 来月经腿酸软时怎么办
- 得了乳腺增生怎么办
- MySQL约束之默认约束default与零填充约束zerofill