AustinDatabases

MySQL 写不进去数据,程序报错,谁的问题?

❝

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群加群请联系 liuaustin3 ,(共3400人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 )(1 2 3 4 5 6 7 8群已经爆满  9群 为纯聊天群,默认不加入不得发广告,自己公众号文章链接等,发一次直接踢,默认加入8群,开10群PolarDB专业学习群115+)

MySQL写不进去数据,最近部署了一个匪夷所思的项目,外包开发的,那是一点都不靠谱。好像用了一个特别老的Mybatis这个JAVA的矿建里面的 JDBC连接串中的characterEncoding=utf8是写死的,开发改成utf8mb4,直接就报错,说不支持。

MySQL这边(兼容mysql的产品也是一样,包含polardb for mysql),在建库,建表的时候我们都是按照 utf8mb4建立的表和库,但是在应用程序写入数据的时候,一些文字里面有笑脸,或者特殊的标记,这样的应用直接报错,说写入不了数据库。这主要还是MySQL驱动的问题,在传输数据的时候,而不是写到数据库的时候,就直接拦截了emoji 或者生僻字。

java.sql.SQLException: Incorrect string value

因为这个事情我们之前也是没有遇到,不过最后解决了,那么我们看看有几种解决方案。

解决方案 1

虽然全局的链接我们改不了,但我们可以在每次建立数据链接后,直接修改当前链接的字符集,比如每次在插入数据的时候,先执行一条 set names utf8mb4;

解决方案2

在数据源的配置中,让连接池自己在创建链接的时候,自动初始化语句。

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init">
  <property name="connectionInitSqls">
      <list>
          <value>SET NAMES utf8mb4</value>
      </list>
  </property>
</bean>

解决方案3

在JAVA代码层进行Base64的编码,将含有Emoji的文本编码后在写入到 varchar 读取在解码。

当然这个非常不适合遇到如我这次紧急发现问题还要当天上线的情况。

解决方案4  这个回到怎么的本行,数据库,数据库mysql里面可以进行调整配置,解决问题

在 MySQL 中,字符集配置不仅仅是一个“显示层”的问题,而是直接决定了数据存储、传输和比较的方式。在我们遇到乱码、插入失败、排序异常,其根源往往就是客户端和服务端的字符集不一致。

我们需要修改以下的参数或校准参数重启数据库后,问题解决。首先character-set-server = utf8mb4 这个一定要改,改完数据库需要重启,这个的目的就是让MYSQL默认使用utf-8的四个字节的扩展版本UTF8MB4.

同时对应的collation-sever也需要改变,统一到collation-server = utf8mb4_general_ci,这是排序规则,他决定了字符串比较时的大小写敏感的问题和语言本身的特性。更复杂的排序会在进行字符排序的时候,查询性能变差。

同时我们还要注意一个配置 character-set-client-handshake = FALSE

这个配置可以强制MYSQL 拒绝听从客户的字符集握手的请求,而是将服务器端的配置UTF8MB4强制给客户。

Image

最后最后,字符集的变动是一件大事,不光影响你的字符集写入的问题,还影响你的数据磁盘空间占用和内存的占用的问题,对吗!

为什么你对AI 不积极,你落后了吗? 快要积极了,因为AI泡沫快爆了

AI 建议用pgbouncer 解决PostgreSQL  链接多的问题,唉信AI,你的死多少次!

2026数据库周边软件企业,生存困难,谁能帮一把 !

MongoDB 全文索引 与 展示查询数据的一部分,提高性能

详述PG修改字段类型不锁表的原理 step by step

传统RDBMS架构师的MongoDB思维破局与落地实践

如果没有了磁盘,数据库是不是更快,硬件会改变数据库设计的理念吗?

什么MongoDB 8.0 无索引加速聚合操作? 疯了吧!

体现价值-我们靠PostgreSQL迁移PolarDB,给公司省下了100万 “巨款”

《告别迁移焦虑:OceanBase MySQL 模式能否兼容 DBA 的“祖传”运维 SQL?》

干数据库不是买白菜:光盯着License几毛钱,看不见300台机器的电费?

一个秘密,不是你 SQL 写对了,是优化器帮“擦了屁股”  客户问迁移后为什么快了--迁移到PolarDB后的故事

AI 时代,我却用不上一个靠谱的数据库产品

AI 引入后,MySQL 列权限控制,插入,更新,读取,删除 --有了AI 真是越帮越忙

PostgreSQL 大表改字段卡死的问题解决了吗?  解决了方案在此

AI 引入DBA 工作,造成工作量增加,忙不过来,根本忙不过来!!!

三无项目导致MongoDB 持续1406% CPU 问题解决

阿里云MongoDB 部署安全吗? 多可用区怎么搞?

Image