MySQL utf8mb4字符集之表情包存储/生僻词存储
针对MySQL数据库业务生产环境中,经常会有存储表情包的场景,比如:用户评论中的表情包数据。那么MySQL该如何存储这些表情数据呢?
1、直接insert插入?
既然这篇文章能够横空出世,说明直接insert是行不通的,不出意外的话,你会看到以下报错:ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\xA4\xA4' for column 'content' at row 1
2、MySQL字符集utf8mb4
涉及到文字、字符、表情等字符的存储,肯定是离不开MySQL对字符编码的支持。utf8mb4就是支持表情包的字符集,而MySQL在5.5.3版本时,就已经实现了对utf8mb4字符集的支持。关于字符集的相关介绍,我这里就不再赘述了,详情可以参考:MySQL字符集变量介绍。接下来我们直奔主题~
(1)修改MySQL配置文件
# 修改my.cnf配置文件
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
init_connect = SET NAMES utf8mb4 # 用户登录到数据库上之后,在执行第一次查询之前,执行的内容的
skip-character-set-client-handshake = 1 # 跳过mysql程序起动时的字符参数设置 ,使用服务器端字符集设置
(2)修改存量表字符集
# 在线修改表字符集
alter table tb_name convert to character set utf8mb4;
3、表情包存储测试
(1)准备测试数据
create database starcto;
use starcto
CREATE TABLE my_comments (
`bulletinId` bigint NOT NULL COMMENT '消息id',
`content` varchar(256) NOT NULL COMMENT '内容',
PRIMARY KEY pk_my_comments(`bulletinId`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
# 插入带有表情的测试数据
insert into my_comments (bulletinid,content) values (0, '谢谢,太好看了!!🤤');
insert into my_comments (bulletinid,content) values (1, '谢谢,太好看了!!🤤');
(2)查看插入的表情包数据
4、生僻字存储测试
(1)报错复现,准备初始测试表
create database DB;
CREATE TABLE student
(
sno INT,
sname VARCHAR(32),
ssex VARCHAR(8) ,
primary key (sno)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; # 初始指定默认字符集utf8
# 插入生僻字:𬌗𬌗
insert into student values (1001,'𬌗𬌗','男');
(2)异常解决
#(1)查看表结构,发现student表默认是utf8字符集
mysql> show create table student\G;
*************************** 1. row ***************************
Table: student
Create Table: CREATE TABLE `student` (
`sno` int(11) NOT NULL,
`sname` varchar(32) DEFAULT NULL,
`ssex` varchar(8) DEFAULT NULL,
PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
#(2)修改表字符集
mysql> alter table student convert to character set utf8mb4;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
#(3)再次插入测试
作者:UStarGao
链接:https://www.starcto.com/mysql/307.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-03-18Linux入侵检测AIDE-检查文件的完整性
- 2021-08-25Docker镜像逆向工程-镜像分析
- 2021-01-26K8S核心概念
- 2022-05-27MongoDB慢查询日志之Profiling配置
- 2021-05-21第三方常用工具收录