踩坑mysql保存emoji表情报错

2023-11-11

表单输入emoji提交报错。查看了后台日志,发现这样的日志:

org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x83' for column 'name' at row 1 

查看mysql表字符编码发现这个表使用的是utf8编码,utf8编码最多只支持3个字节,而emoji是四字节编码的。所以先将数据库表字节编码改为utfbmb4,该编码是utf8的超集,支持四字节编码字符存储。

    alter table 表名 character set utf8mb4;

执行上述语句后,仍然报错,查看表字段字符编码,发现表字段编码仍为utf8,所以再将表字段编码改为utf8mb4,

alter table 表名 convert to charset utf8mb4;

执行此步后,插入emoji仍然报错。此时数据库已经支持emoji存储,所以考虑是jdbc驱动的问题。

查看jdbc驱动版本是5.1.18。而jdbc驱动从5.1.13就开始支持utf8mb4了,所以不是驱动版本的问题。再看一下jdbc url是这样的:

jdbc:mysql://10.101.80.98:3306/test?useUnicode=true&autoReconnect=true&characterEncoding=UTF8&allowMultiQueries=true

问题在于characterEncoding=UTF8这个参数设置。原来jdbc 驱动版本5.1.13以后,就不需要设置此参数了,将此参数去掉,jdbc url改为

jdbc:mysql://10.101.80.98:3306/test?useUnicode=true&autoReconnect=true&allowMultiQueries=true

再次测试,可以成功插入emoji了。

总结:

MySQL保存emoji注意点

  1. MySQL版本大于5.5.3
  2. 数据表和字段编码采用utf8mb4
  3. jdbc驱动版本大于5.1.13
  4. jdbc url不要指定characterEncoding参数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

踩坑mysql保存emoji表情报错 的相关文章

  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • gem install mysql:无法构建 gem 本机扩展 (Mac Lion)

    我为 Mac OS X Lion 安装了 MySQL 5 5 27 来自 dmg 现在我尝试安装 mysql gem gem install mysql Building native extensions This could take
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • POINT 列上的 MySQL INSERT/UPDATE

    我正在尝试用我国家的地理位置填充我的数据库 我的一张表有 4 个字段 ID PK 纬度 经度和地理点 EDIT SCDBs Punto Geografico SET lat 18 469692 SET lon 63 93212 SET g
  • 从按日期时间排序的 MySQL 表中获取用户的最后一个条目

    我有一张看起来像这样的桌子 USERNAME DATA DATETIME Jhon text1 2010 06 01 16 29 43 Mike text2 2010 06 01 16 29 22 Silver text3 2010 05
  • 海量记录的bulk_create最佳实践

    I use bulk create将 1 mio 记录插入到新表中 需要 80 秒 Django 只使用一个 CPU 核心 大约 25 CPU 但没有一个核心达到 100 我相信有改进的潜力 这是代码 class Stock models
  • 不允许在 php 中连接到此 MariaDB 服务器

    我尝试在 php 中连接远程服务器数据库 但出现以下错误 Host xx xxx xx xx is not allowed to connect to this MariaDB server in 我的连接代码是这样的 servername
  • 如何优化这个MySQL慢(非常慢)查询?

    我有一个 2 GB 的 mysql 表 包含 500k 行 我在没有负载的系统上运行以下查询 select from mytable where name in n1 n2 n3 n4 bunch more order by salary
  • 如何在 MySQL 中求和时间?

    正如您在图片中看到的 我有一份停机报告 显示了所选工厂在选定日期的停机时间 现在我想添加所有的值 Time Duration 列并将其显示在附近的单独显示中 TOTAL TIME DURATION 例如 在图像中 所选日期为 2015 年
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • mysql 中的二进制、十六进制和八进制值

    我对在 mysql 数据库中使用二进制 十六进制和八进制系统非常感兴趣 首先 请给我一个建议 为什么我们在存储信息时需要它们 因为信息太多 或者为什么 另外 哪种类型的值必须存储在标记系统中 另外这里还有像 这是例子 gt SELECT 5
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • 如何从批量数据中的mysql列中删除所有非数字字符

    我想从列中删除所有非数字字符 我的数据库中有大量数据 目前我正在使用以下链接中描述的方法 http venerableagents wordpress com 2011 01 29 mysql numeric functions http
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca

随机推荐

  • Tracy 小笔记 Vue - 路由

    Vue Router 路由中有一个非常重要的概念叫路由表 本质上就是一个映射表 决定了数据包的指向 服务器渲染 后端渲染 如 jsp php java 服务器直接生产渲染好对应的 html 页面 返回到客户端进行展示 这种情况下渲染好的页面
  • java实现截图功能

    java实现截图功能 java实现截图 录屏 public static void main String args throws InterruptedException 截取整个屏幕 保存在H盘下 名字为当前时间毫秒值 格式为png T
  • Unity3D-UI--Layout组件

    Layout组件 自动排版 Layout Group Vertical Layout Group 垂直布局 垂直布局组 组件将其子布局元素彼此重叠 它们的高度由各自的最小高度 首选高度和柔性高度决定 具体取决于以下模型 Vertical L
  • Activity之间的跳转的两种实现方法

    概括 在Android当中 Activity的跳转有两种方法 第一个是利用startActivity Intent intent 的方法 第二个则是利用startActivityForResult Intent intent int req
  • QT添加外部动态库

    编译完动态库 将动态库debug文件夹中的 a和 dll拷贝下来 在window中 dll 动态库 lib 静态库 在linux中 so 动态库 a 静态库 在根目录下新建include 并放入其中 同样的把头文件也放入include中 然
  • 图论基本概念

    文章目录 图 相邻 度 简单图 路径 子图 连通 无向图 有向图 本章概述了图论中的一些概念 部分内容来源于 OI Wiki 图 图 Graph 是一个由 点集 Vertex set 和 边集 Edge set 组成的二元组 常用 G V
  • 哈工大深圳计算机水平怎么样,还原一个真实的哈工大!——十问(转载)

    发信人 hiticeberg 千面怪 信区 NewExpress 标 题 还原一个真实的哈工大 十问 发信站 水木社区 Fri May 30 19 37 50 2008 站内 作为哈工大的土著 也许也是目前连续在校时间最长的哈工大学子 在毕
  • [蓝桥杯][2013年第四届真题]剪格子

    一定要好好审题啊 行号和列号跟题意要求的搞反了 结果de到怀疑人生了 这个题给的数据量不大 所以我就放心大胆的在每个中间节点里各开了一个vis标记数组 用来记录每一条广搜路径走过的节点 include
  • 微信小程序使用 scss

    一 在 vscode 中安装 easy sass 扩展 二 在微信开发者工具导入 vscode 安装的 easy sass 扩展 安装完成后会让重新加载扩展 再次打开后就可以看到扩展已经有 easy sass 了 三 修改 easy sas
  • 【雕爷学编程】MicroPython手册之 WiPy 特定端口库 wipy.machine.I2C.readfrom()

    MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器 与常规Python相比 MicroPython解释器体积小 仅100KB左右 通过编译成二进制Executable文件运行 执行效率较高 它使用
  • 用logrotate拆分nginx日志

    被遗忘的Logrotate
  • uban服务器系统,Web服务器-并发服务器-Epoll(3.4.5)

    1 介绍 epoll是一种解决方案 nginx就是用的这个 中心思想 不要再使用多进程 多线程了 使用单进程 单线程去实现并发 在上面博客实现的代码中使用过的轮询去查看套接字有没有数据 而epoll是主动通知 当使用多进程的时候 是复制一份
  • osg学习(六十九)平移、旋转、缩放实现过程

    1 主程序 osg PositionAttitudeTransform patTransform new osg PositionAttitudeTransform patTransform gt setPosition l2wMatrix
  • SuperSocket教程八:通过服务器计划将数据推送到客户端

    前面我们知道了如何使用客户端去连接服务端 然后给服务端发送消息 根据消息的关键字服务端进行返回等等 但是那都是来自客户端的请求 我们服务端如何去主动给客户端发消息呢 这些逻辑到哪里去写呢 这里我写了一份代码供大家参考 官方文档说了 建议se
  • 视听融合综述(一)Audiovisual Fusion: Challenges and New Approaches

    分享一篇视听融合研究综述 2015年发表在Proceedings of the IEEE上 该期刊创刊于1913年 是IEEE最古老的杂志之一 主要刊登一些综述和科学前沿的调查研究 review survey and tutorial 不刊
  • 【react】_state的简写方式

    在真实的类组件中 不会出现构造器 想把自定义的属性添加到实例对象上 在类中直接赋值即可 但切记 只有固定的值才可能这样写 如果赋的是一个变量 还是要写构造器 class Weather extends React Component con
  • CDN中,字体文件的跨域问题和解决

    来源 CDN中 字体文件的跨域问题和解决 由于网站的资源文件使用的是另外的域名 这样做是便于浏览器在加载时可以提高加载效率 关于domain hash也就是多域名来加速访问的问题有空再说 这样主域名和资源的域名尤其是字体文件 就形成跨域访问
  • 【计算机视觉

    文章目录 一 检测相关 13篇 1 1 DiffusionEngine Diffusion Model is Scalable Data Engine for Object Detection 1 2 ClusterFusion Lever
  • Java调用Native方法

    Java调用Native方法 Java中支持调用其他语言 C C 想要实现调用 需要进行以下几步操作 编写Java类并声明Native方法 package my mynative background public class Studen
  • 踩坑mysql保存emoji表情报错

    表单输入emoji提交报错 查看了后台日志 发现这样的日志 org springframework jdbc UncategorizedSQLException Error updating database Cause java sql