解决mysql保存数据SQLException: Incorrect string value: ‘\xF0\x9F\x91\x87\xE5\x91...‘ for column ‘错误

news/2024/11/7 18:38:56/

今天在保存数据的时候mysql抛出了以下异常:

这里写图片描述

查了一下,发现是编码问题,本地数据库的默认编码是utf8,默认保存的是1到3个字节,但是现在的emoji表情采用4个字节保存,所以抛出异常。

环境:

操作系统:window10;

mysql版本:5.6.27;

解决的方法有好多,比如:

####1. 在程序中过滤emoji表情;
####2. 修改数据库编码为utb8mb4

我采用第二种方法解决:

先查看数据库编码:

这里写图片描述

接着打开数据库的配置文件, mysql5以上版本的配置文件放在ProgramData\MySQL\下,而不是安装目录,如果你不知道配置文件放在哪里,可以通过【服务】找到【mysql】服务,从启动参数中看出:这里写图片描述

如果是第一次修改数据库编码,打开文件也不知道要修改哪个参数,不过,从上面查询的系统变量可以猜测,要修改的应该是【character_set_database】,在文件中只发现这个参数:

这里写图片描述

在文件开头有个网址,有点疑惑,于是打开这个网址看看:

#
# In this file, you can use all long options that the program supports.
# If you want to know the options a program supports, start the program
# with the "--help" option.
#
# More detailed information about the individual options can also be
# found in the manual.
#
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
#

打开后再进入到 Section 5.1.5, “Server System Variables”,搜索【character_set_database】,可以看到:

这里写图片描述

这个变量是不能手动修改的,于是试着修改【character-set-server】:

character-set-server=utf8mb4

重启mysql,查看变量:

这里写图片描述

问题解决。

参考资料:

http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html
http://stackoverflow.com/questions/8709892/mysql-throws-incorrect-string-value-error


http://www.ppmy.cn/news/404077.html

相关文章

Tomcat9安装及配置步骤

安装前需要先安装 Java 环境 jdk1.8安装:https://blog.csdn.net/weixin_42109012/article/details/94388518 1.下载tomcat9 ,官网地址:http://tomcat.apache.org/ 1.1、选择自己想要的tomcat版本。 1.2、根据自己电脑的系统 ,下载对应的版本zip ,我下载的是windo…

阿里面试了7轮...就这么狠的吗?

引言 今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这…

x = x(x-1)

执行一次x x&(x-1)&#xff0c;会将x用二进制表示时最右边的一个1变为0&#xff0c;因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0。 如下面 int x9;int i;for ( i 0; i < x; i) { x & (x-1); } 执行结束 i 2&#xff0c;因为91001&#xff0c;有…

matlab怎么表示x的平方,用matlab算多项式x平方

matlab 多项式函数相加 用符号变量编写:y=1;symsxfori=1:5y=y+x^i;endyy=1+x+x^2+x^3+x^4+x^5求y(3)输入:subs(y,x,3)ans=364或用字符变量编写,代值转成符号变 matlab输入多项式 symssp=(s+2)*(s+5)*(s+6)再问:中间那个乘号能去掉吗再答:最好不要省略,或者说绝对不能省略。…

红米note9和oppoK7x哪个好?红米note9和oppoK7x区别

红米note9和oppoK7x哪个好-红米note9和oppoK7x参数对比 红米note9&#xff1a;为用户带来6.67英寸LCD屏幕&#xff0c;支持120hz屏幕刷新 oppoK7x&#xff1a;采用一块6.5英寸LCD屏&#xff0c;分辨率为2400x1080&#xff0c;支持90Hz刷新率180Hz触控采样率 红米note9和oppo…

C++完美转发解析

1. 完美转发的概念 完美转发&#xff08;Perfect Forwarding&#xff09;是 C11 中引入的一种编程技巧&#xff0c;其目的是在编写泛型函数时能够保留参数的类型和值类别&#xff08;左值或右值&#xff09;&#xff0c;从而实现更为高效且准确地传递参数。通过使用右值引用和…

Python语法基础01(列表,元组,字典)

Python基础语法 变量的命名与使用 变量名只能包含字母、数字和下划线&#xff0c;只能以字母和下划线为开头不能包含空格不能使用python保留字 列表&#xff0c;元组&#xff0c;字典 列表 定义列表(元素之间可以没有任何关系)&#xff1a;[] 例如 fruits["apple&qu…

游泳可以戴的耳机有哪些?四款专业的游泳耳机推荐

现在人们都开始热衷于运动健身&#xff0c;运动时大多会听音乐&#xff0c;市面上的运动耳机层出不穷&#xff0c;多数都是蓝牙耳机&#xff0c;但是有一些运动不太适合。 例如游泳&#xff0c;其他运动都可以将手机放在附近&#xff0c;但是游泳就不行了。所以游泳时可以听歌的…