解决mysql保存数据SQLException: Incorrect string value: '/xF0/x9F/x91/x87/xE5/x91...' for c

2017-01-06 07:57:07来源:CSDN作者:wang704987562人点击

今天在保存数据的时候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

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台