mysql 5.7 版本输入法表情符问题-----java解决办法
测试环境:
我使用的工具
- mysql 8.0.17
- mybatis starter 2.1.1版本
数据库编码utf8mb4,表character也是utf8mb4,collate utf8mb4_general_ci。
上面这个配置,写代码,存表情符,完全没有问题。
生产环境:
我使用的工具
- mysql 5.7.10-log
- mybatis starter 2.1.1版本
数据库编码utf8mb4,表character也是utf8mb4,collate utf8mb4_general_ci。
一个insert操作,表中msg字段包含了表情符,结果抛错如下:
\r\n### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\\xF0\\x9F\\x98\\x80\\xF0\\x9F...' for column 'msg' at row 1\r\n### The error may exist in file [E:\\cjsc\\wg\\jdk8\\summary\\target\\classes\\mybatis\\BlessMsgMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO t_bless_msg(create_id,msg) VALUES( ? , ? )\r\n### Cause: java.sql.SQLException: Incorrect string value: '\\xF0\\x9F\\x98\\x80\\xF0\\x9F...' for column 'msg' at row 1\n; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1366]; Incorrect string value: '\\xF0\\x9F\\x98\\x80\\xF0\\x9F...' for column 'msg' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\\xF0\\x9F\\x98\\x80\\xF0\\x9F...' for column 'msg' at row 1
解决办法:
mapper.xml
<insert id="save">INSERT INTO t_bless_msg(create_id,msg) VALUES(#{userId} ,#{msg})</insert><update id="setUTF">SET NAMES utf8mb4</update>
mapper.java
int save(@Param("userId") Integer userId, @Param("msg") String msg);/*** 临时设置编码* @return*/int setUTF();
serviceImpl.java
@Override@Transactionalpublic void save(Integer userId, String msg) {//session级别的设置编码,会话内有效blessMsgMapper.setUTF(); //blessMsgMapper为上面的mapper.java类blessMsgMapper.save(userId, msg);}
没错,就是这样,解决了表情符的问题。
主要起作用的是会话级别的编码设置SET NAMES utf8mb4
。特别注意,这两个操作要在同一个事务中。
mysql 5.7 版本输入法表情符问题-----java解决办法相关推荐
- mysql 输入法表情数据,mysql 5.7 版本输入法表情符问题-----java解决办法
测试环境: 我使用的工具 mysql 8.0.17 mybatis starter 2.1.1版本 数据库编码utf8mb4,表character也是utf8mb4,collate utf8mb4_g ...
- 记一次PHP+Mysql保存微信昵称带表情符失败案例
记一次PHP+Mysql保存微信昵称带表情符失败案例 bug描述 做微信登陆时,出现部分用户不能等陆. 经过查看日志,发现是因为此部分用户使用了带表情的昵称. Statement could not ...
- python安装pyinstaller出现错误_pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)...
本机中原pyinstaller版本为3.5版本,本打算通过 pip install --upgrade pyinstaller进行升级,竟然报错,后面卸载再重新安装也一样报错,没办法看来通过pip是暂 ...
- Win10玩游戏时输入法引起的闪退解决办法
Win10玩游戏时输入法引起的闪退解决办法 前言 最近用Win10玩大型单机游戏时碰到一个问题,就是在游戏中摁Shift键时会引起游戏卡顿,甚至引起游戏闪退.一开始我以为是电脑的问题,但是电脑配置和设 ...
- linux mysql 登录报1045_【mysql】linux登录MySQL_报错ERROR_1045_(28000)解决办法
[mysql]linux登录MySQL_报错ERROR_1045_(28000)解决办法 5年前 (2015-09-17) 作者:Jiaozn 分类:MySQL 阅读次数:1852 ...
- 关于傲梅分区助手之后盘符错乱以及盘符互换的解决办法
关于傲梅分区助手之后盘符错乱以及盘符互换的解决办法 相信大家一定遇到过电脑c盘中内存不足的问题 下面来说说我的情况吧,我的电脑是戴尔的xps15-9550乞丐版,只有一个256g的固态 随着软件的越来 ...
- 使用MySQL Workbench导出数据库脚本以及出错时的解决办法
使用MySQL Workbench导出数据库脚本以及出错时的解决办法 正常做法 打开workbench,选择左上角的菜单栏,选择Server->Data 之后出现如下界面 一般情况下,这样就导出 ...
- 关于xlrd最新版本不支持.xlsx文件的解决办法
文章目录 关于xlrd最新版本不支持.xlsx文件的解决办法 解决方案,回退到xlrd1.2.0版本 这是很久之前我就遇到的一个问题,这次又遇到了,发现之前没有写笔记,这次记录一下. 关于xlrd最新 ...
- 合击版本异地网关无法正常登录解决办法
异地网关设置不能正常登录,合击版本异地网关无法正常登录解决办法, 修改BOOT很简单,根据以下步骤就可以完成,修改完毕后,请重起服务器. 修改方法: 点桌面我的电脑-反键-属性-高级-启动和故障恢复- ...
最新文章
- Android Scroller与computeScroll方法的调用关系
- elasticsearch查询
- mysql scott用户_在mysql中创建 oracle scott 用户的四个表及插入初始化数据
- 《Python Cookbook 3rd》笔记(2.7):最短匹配模式
- 作者:房毓菲(1990-),女,就职于国家信息中心信息化研究部,中国智慧城市发展研究中心政策研究组副组长。...
- C++:利用sort()对vector中的数据自定义排序
- pack unpack 用法 转载
- ios动态创建类Class
- PySide2 QCheckBox控件应用
- Linux系统手机投屏实现电脑控制手机(Windows)
- 由磁场数据和加速度数据计算初始姿态角
- 【期末不挂科 数据结构】第一章 绪论
- SQL笔试题目分享(一)
- 韩国区块链步入快车道:SM、Kakao、三星、LG等巨头ALL IN
- HTML如何制作百度首页?代码是什么
- 房产税,抑制高房价的最后稻草?
- 18天精读掌握《费曼物理学讲义卷一》 第6天 2019.6.19
- HTTP请求头部+响应码
- 三维格式学习-wrl
- 树莓派搭建nextcloud