一、问题背景

背景很简单,要存4字节的表情符号,mysql表的相关字段的字符集需要修改成utf8mb4,这个没啥好说的,网上一大堆的类似的解决方法,问题是项目里面使用了存储过程,在利用java调用存储过程的时候,老报错,整个人直接就傻了,还好利用google找到了问题的解决办法,贴一下报错内容,其中p_topicname是存储过程的输入参数 com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x98\x82' for column ``.``.`p_topicname` at row 1

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3885)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2530)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1907)

at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1199)

at com.mysql.jdbc.CallableStatement.execute(CallableStatement.java:870)

at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)

at com.zaxxer.hikari.pool.HikariProxyCallableStatement.execute(HikariProxyCallableStatement.java)

二、解决思路

参考这篇https://www.codenong.com/44591895/(应该是stackoverflow之类网站上的机翻吧),防止连接失效,讲一下大概解决思路,首先利用 SHOW PROCEDURE STATUS where name LIKE 'p_addzhihuquestion';这个命令可以看到存储过程的相关状态,里面是有字符设置的相关状态,这个就比较夸张了,至于character_set_client的具体含义,百度即可,前者指客户端的连接字符集。

那最后问题解决办法就很简单了,只要在相关的字符集连接环境下重新建立存储过程即可,

1 DROP PROCEDURE p_addzhihuquestion

2 SET NAMES utf8mb4;

3 delimiter $$

4

5 CREATE DEFINER=`ilinkie_test`@`%` PROCEDURE `p_addzhihuquestion`(IN `p_questionuuid` varchar(32),IN `p_useruuid` varchar(32),IN `p_title` varchar(255),IN `p_content` varchar(1000))

6 BEGIN

7 #Routine body goes here...

8 END$$

9

10 delimiter;

最后使用命令重新查看一下

character_set_client变成utf8mb4了,现在可以重新愉快玩耍了

mysql 4 字节存储问题_关于mysql存储过程存储4字节emoj的'\xF0\x9F\x98\x82' for column ``.``.`p_topicname`问题的解决办法...相关推荐

  1. MySql表情emoji存储‘\xF0\x9F\x98\x82‘ for column ‘msg‘ at row 1 报错解决,亲测效果佳

    目录 前言 一.更改数据库的编码格式 二.mysql配置更改 1.将配置对应添加到配置文件中 2.更改存储字符段格式 3.重启测试 前言 最近在实验 websocket 及时通讯,在使用表情时出现报错 ...

  2. 【Mysql】存储emoji表情报错(Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F...‘)的解决方案

    [Mysql]存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案 参考文章: (1)[Mysql]存储emo ...

  3. 【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...

    Emoji表情字符现在在APP已经广泛支持了.但是MySQL的UTF8编码对Emoji字符的支持却不是那么好.所以我们经常会遇到这样的异常: Java.sql.SQLException: Incorr ...

  4. mysql xf0x9fx8ex88_【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...

    Emoji表情字符现在在APP已经广泛支持了.但是MySQL的UTF8编码对Emoji字符的支持却不是那么好.所以我们经常会遇到这样的异常: Java.sql.SQLException: Incorr ...

  5. MySQL异常 #SQLException: Incorrect string value: ‘\xF0\x9F\x98\x84i...‘ for column

    1.异常现象 MySQL 插入 Emoji 表情异常:Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x ...

  6. mysql存储移动端emoji表情 报错Incorrect string value: '\xF0\x9F\x98\x82'

    原因:mysql utf8存储2-3个字节 移动端的emoji表情为4个字节 方法: 1.修改my.cnf 文件 加入 [client] default-character-set = utf8mb4 ...

  7. (MySQL)Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' for column 'readerName' at row 1

    在向数据库存入表情的时候,出现这样的错误,网上搜了一下,各种命令,改配置,后来对比一下,发现这么改也是一样的.送上解决办法,但是不保证全部适用.出现这样的问题是因为,普通的字符串或者表情都是占位3个字 ...

  8. 存储emoji表情或特殊字符报错(Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F...‘)

    今天发生一件有趣的事情. 我的博客 我在一篇文章中使用了**emoji表情**,前面很顺利,不管是WordPress还是其他博客园啥的,都是正常发送. 但是,我在Typecho系统中发布文章时.... ...

  9. 【已解决】Mysql 存储 emoji 表情报错 Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F

    mysql 库.表.字段 字符集从 utf8 改为 utf8mb4 校验规则改为 utf8mb4_unicode_ci

最新文章

  1. 从Google的PaaS平台说起,解析中美Docker生态圈
  2. php模块memcache和memcached区别分析
  3. unix网络编程 的环境配置
  4. 移除元素所有事件监听_DOM 事件模型或 DOM 事件机制
  5. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性
  6. mysql 视图报错_MySQL使用Union创建视图报错
  7. Linux之chmod命令
  8. jQuery操作DOM对象
  9. Android开发之蓝牙(Bluetooth)---源码目录
  10. Mysql添加远程访问权限
  11. MySQL的show global variables like “%timeout%“;
  12. 2018,人生是一条蛇,它咬着自己的尾巴
  13. 项目合同管理:合同分类、费用支付方式、违约责任承担方式、签订注意事项、合同索赔流程
  14. BOM成本计算成最下级算到最上级
  15. golang 定时任务处理
  16. 【Fungus笔记】No.12:Load Scene(加载场景 / 转场)
  17. java8 使用stream进行排序(多字段排序、升序、降序)
  18. CS、BS架构定义(笔记)
  19. Instructional Technology Notes at random
  20. bank conflict

热门文章

  1. 用户邀请码的生成方法
  2. java csvwriter 追加_CSV文件每行的末尾追加写数据
  3. ​5.10.4 操作查询之​追加查询
  4. 精准面试突击55:delete、drop、truncate有什么区别?
  5. 单目标应用:白鲸优化算法(Beluga whale optimization,BWO)优化双向长短时记忆BiLSTM的权值和阈值(提供MATLAB代码)
  6. 如何用计算机整理数据,总结:如何在excel中制作数据统计表(最简单的excel分类汇总教程)...
  7. C/C++编写Windows窗口应用程序(Win32程序),非黑漆漆的控制台窗口
  8. mysql错误1146解决方法
  9. 小程序_图片剪切功能(支持多图片上传)
  10. 南京:探索实施“电子围栏”管理新模式 缓解商圈周边道路交通拥堵