解决MySql保存数据java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x91\x87\xE5\x91...‘
Mysql的utf8编码最多3个字节,Emoji表情或者某些特殊字符是4个字节,所以由于编码的原因,数据插不进去而抛出此异常。
在此篇文章中介绍两种解决方法。
一、在程序中过滤4个字节的Emoji表情或者某些特殊字符
把它们替换成空串就ok了!!!
二、修改数据库编码为utf8mb4
1. 在配置文件中修改数据库的字符编码,设置永久的字符编码。
Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录,而Linux下MySQL的配置文件是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。Linux用rpm包安装的MySQL是不会安装/etc/my.cnf文件的。
my.ini作如下修改:
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
修改后重启Mysql
my.cnf作如下修改:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
修改后重启Mysql
至于为什么没有这个文件而MySQL却也能正常启动和作用,有两个说法:
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动;
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL。
解决方法:只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。
2. 将已经创建好的表的编码修改成utf8mb4
更改数据库编码格式命令:
mysql>alter database <数据库名> character set utf8mb4 collate utf8mb4_general_ci;
更改数据表编码格式命令:
mysql>alter table <表名> convert to character set utf8mb4 collate utf8mb4_bin;(此命令可以修改表中所有字段的编码格式)
解决MySql保存数据java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x91\x87\xE5\x91...‘相关推荐
- 已解决Cause: java.sql.SQLException: Incorrect string value: ‘\\xF0\\x9F\\x8C\\xB8 \\xE5...‘报错
保存订单存入数据库时,报错: "\n### Error updating database. Cause: java.sql.SQLException: Incorrect string v ...
- mysql保存emoji报java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8B'
最近在做即时聊天功能,需要支持 emoji 表情,测试直接发送时后台 mysql 数据库会报类似 java.sql.SQLException: Incorrect string value: '\xF ...
- 终极解决MySql: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x8C\x9D\xF0\x9F...‘ for column
1.异常 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8C\x9D\xF0\x9F...' for column '' at r ...
- java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x90\xB1\xF0\x9F...‘解决
mysql 字符存在表情包 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB1\xF0\x9F-' for column ...
- 解决 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F-' 问题: 因为表情符号存入Mysql数据库字符串不兼 ...
- ### Cause: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x96\x8B \xE7...‘ for column ‘con
目录 前言: 插入数据库异常报错信息如下,xshell服务器后台抓取的异常信息 插入失败原因,原因定位说明 数据库配置操作命令,解决方案一 java层面的最简洁的解决方案二[推荐] 网上一些其他的方案 ...
- java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8E' for column 'nick' at row 1
mysql报错: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8E' for column 'nick' at r ...
- 【MySQL】Java.sql.SQLException Incorrect string value: \xF0\x9F\x98\x8D\xE8\xBE...
1.背景 因为用markdown写入的文件,现在要导入到mysql数据库,但是导入的时候报错如下. 原因是该种字符串为Emoj表情内容,每个字符占用4个字节,在Mysql中默认最大支持3个字节,超长了 ...
- MySql中报错:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xBB' for column
将表格的charset改为utf-8 alter table table_name charset =utf8;
- java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x9B],...' for column 'DESCR' at row 1问题
今天在项目中碰到这样的报错,原因是特殊字符无法插入数据库,只需要将数据库字段做以下修改: 项目为微信公众号,其中微信用户的昵称,当你读取保存的时候用户的微信昵称可能包含特殊字符 所以在数据库所有有关保 ...
最新文章
- mqttjar包_GitHub - a-voyager/MqttLib: Mqtt 通信封装库.
- 脑电分析系列[MNE-Python-1]| MNE-Python详细安装与使用(更新)
- python对象点方法_python对象方法、类方法、静态方法
- OA中SSH+JBPM项目整合
- 请解释下Spring 框架中的IOC 容器?
- AM2320 温湿度计 单总线读取数据
- debian php mysql 安装_在 Debian 下安装 Apache,MySQL,PHP
- LeetCode 277. 搜寻名人(思维题)
- 美国最受欢迎的电商网站,竟然是一家中国公司?
- 【java】IDEA安装VisualVM插件-使用介绍 检测死锁 内存 cpu 慢方法
- 力控数据写入mysQL_绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来...
- 图解+笔记-4.2.1 字符串获取操作、字符串合并和重复操作
- mysql学习之路三(转)
- mysql 并发 加锁_MySQL的并发控制与加锁分析
- MySQL性能优化[实践篇]-复合索引实例
- YYKit-YYCache分析
- mongo异常无法启动-处理方法
- 51单片机LCD1602的使用
- android 跑马灯 竖线,专为电竞和内容创作者而生!体验惠普 ENVY TE01台式机
- Revit 2015 API 的所有变化和新功能