关于MySql插入表情Emoji报错问题解决

关于使用MySQL存储表情的问题与解决

问题描述

1、我们在使用MySQL存储emoji时,如果会报下面的错误:
在这里插入图片描述

原因分析

MySQL数据库默认是UTF-8编码格式,普通的字符串占位3个字节而表情需要占位4字节,此时UTF-8就不够用了,这时候需要采用utf8mb4字符集才能解决,其实现在开发中UTF-8也开始慢慢不建议使用了,可以参考一下下面这文章;
https://mp.weixin.qq.com/s/S0aJ4SKP8IXRKULukgRXEQ

问题解决

所以我们现在目的就是把MySQL的编码格式修改为utf8mb4(mysql5.3.3版本以上)就行了;
可以使用sql直接修改,下面分别修改数据库字符集、修改表字符集、修改表字段字符集;

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE     utf8mb4_general_ci;

这边以修改表字段字符集为例子解决该问题,下面是test表结构
在这里插入图片描述
sql语句:

ALTER TABLE test CHANGE name name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE   utf8mb4_general_ci

插入问题解决:
在这里插入图片描述

补充

在实际开发中,我们应该提前约定好字符集,而不是后面随意更改,随意更改可能会影响到原有数据显示问题;可以更改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 = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'

2、重启mysql

service mysql restart

3、查看是否修改成功

SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';

下图红框内为utf8mb4信息即为修改成功
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值