Su的技术博客

  • 首页
  • 原创
  • 视频
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • AI
  • Other
  • 工具
    • AI工具集
    • 工具清单
    • JSON在线格式化
    • JSON在线比较
    • SQL在线格式化
  • 打赏
  • 关于
路很长,又很短
  1. 首页
  2. 事故复盘
  3. 正文
                           

【原创】MySQL8.0驱动升级事故——之三

2023-08-17 293489点热度 1人点赞 0条评论

这是遇到的第三次升级MySQL8 Java驱动的“坑”之三。分享一些经历,希望可以帮你少掉进坑里。

之一:记一次升级MySQL驱动包引发的事故——日期类型(java.time.LocalDateTime cannot be cast to java.util.Date)
之二:时区问题——13小时

 

之三如下:

①最近有伙伴悄悄升级了Java MySQL8驱动,上线之后业务报障:说某某功能怎么提交不了,而且还提示报错。接到消息,立马查看。排查是某个查询接口报错,于是进一步排查,发现这生产日志打印如下:

MySQL8.0驱动升级事故——之三

可以从上面的异常日志发现,应该是某个字段类型不匹配造成的告警?到底是哪块功能?好像都没人有变更代码。

 

②跟着异常信息,显然是String和Integer类型转换的问题。我们打开业务代码,发现数据表对应的实体字段类型不一致,以为是最近有人改过数据表字段类型,但是经过了解这表的字段一直是这样,从来没有改过。那么修复它的方法就是:修改类型与表字段类型一致即可,立马修复发布测试环境验证,通过之后立马发布生产,避免影响业务使用。

 

③接下来查看接口代码,一看这代码都是2020年的,之后基本没人改过代码了。而且业务反馈之前都用的好好的,为什么现在不行了,是不是改了什么东西??所以就很疑惑。于是发现最近是有版本发布,但是应该跟这块无关。因为代码确实没有改过呀!

但是!但是!一看提交记录才发现有人升级了MySQL8驱动。那么应该就是它引起的吧?

 

④于是剖开源码一探究竟,MySQL5驱动的源码处理是这样的:

MySQL8.0驱动升级事故——之三

 

而MySQL8驱动源码是这样的:

MySQL8.0驱动升级事故——之三

最终,从MySQL驱动源码知道。在MySQL5之前,字段数据处理出现类型异常时,异常堆栈就被“吃”了,从而不影响“正常使用”。但是在MySQL8驱动则做了修改,使用了工厂的设计模式进行不同类型的转换,针对这种类型转换异常,则是直接往外抛,进而在本案例中上面的异常情况。

 

总结:

编码不规范,码农两行泪!

技术债务始终是逃不掉的!

 

更多文章:

  1. 生产环境JVM崩溃问题排查解决
  2. 记一次升级MySQL驱动包引发的事故
  3. 研发日常踩坑-Mysql分页数据重复
  4. 实战:一次疑似内存泄漏的问题排查
  5. 记一次事务里发普通消息的线上问题排查过程
  6. Vim 一下日志文件,Java 进程没了?
  7. 【进阶玩法】策略+责任链+组合实现合同签章
  8. mysql-connect-java驱动从5.x升级到8.x的CST时区问题
  9. iOS请求访问文件网关服务图片接口异常问题的解决
  10. Log4j框架疯狂写日志,导致磁盘打满问题排查
标签: 原创 线上事故 事故复盘 MySQL 生产事故 Java 后端开发 驱动升级
最后更新:2023-08-18

秋天0261

关注Java领域,后端开发、Netty、Zookeeper、Kafka、ES、分布式、微服务、架构等。分享技术干货,架构设计,实战经验等。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

广告
最新 热点 推荐
最新 热点 推荐
视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构 干货 | 论Elasticsearch数据建模的重要性 马蜂窝消息总线——面向业务的消息服务设计 基于 MySQL Binlog 实现可配置的异构数据同步 视频笔记:Google发布Agent2Agent协议 视频笔记:什么是微服务,为什么是微服务? 视频笔记:什么是AI 智能体? 视频笔记:什么是Flink?
Elasticsearch 使用误区之六——富文本内容写入前不清洗基于 MySQL Binlog 实现可配置的异构数据同步马蜂窝消息总线——面向业务的消息服务设计视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构干货 | 论Elasticsearch数据建模的重要性你可以不用RxJava,但必须得领悟它的思想!如何秒级实现接口间“幂等”补偿:一款轻量级仿幂等数据校正处理辅助工具视频笔记:什么是Flink?
超实用的IDEA插件推荐!百万级下载量 Lombok 同时使用 @Data 和 @Builder 的巨坑,千万别乱用! tomcat应用服务启不来,没有报错日志?不可能! 系统设计 | 处理业务公式 系统设计 | 基于读者反馈的补充更新 (1) Elasticsearch 使用误区之二——频繁更新文档 如何写好提示词?(上) 敏捷宣言:敏捷开发的真正意义

CRUD (1) Event Sourcing (1) graphql (1) id (1) NoSQL (1) quarkus (1) rest (1) RocketMQ (2) Spring Boot (1) zk (1) zookeeper (1) 上下文 (1) 事务消息 (1) 二级缓存 (1) 值对象 (1) 关系数据库 (1) 分布式缓存 (1) 原子性 (1) 唯一ID (1) 商品 (1) 多对多 (1) 子域 (1) 字符集 (1) 客户端心跳 (1) 幂等 (2) 干货 (1) 并发 (1) 应用场景 (1) 应用架构图 (1) 康威定律 (2) 异步复制 (1) 微服务架构 (3) 总体方案 (1) 技术方案 (2) 技术架构 (2) 技术架构图 (1) 技能 (1) 持续集成 (1) 支撑域 (1) 故障恢复 (1) 数据架构图 (1) 方案选型 (1) 日记 (1) 服务发现 (1) 服务治理 (1) 服务注册 (2) 机房 (1) 核心域 (1) 泄漏 (1) 洋葱架构 (1) 消息队列 (5) 源码剖析 (1) 灰度发布 (1) 熔断 (1) 生态 (1) 画图工具 (1) 研发团队 (1) 线程 (2) 组织架构 (1) 缓存架构 (1) 编码 (1) 视频 (19) 读写分离 (1) 贵州 (1) 软件设计 (1) 迁移 (1) 通用域 (1) 集群化 (1) 雪花算法 (1) 顺序消息 (1)

推荐链接🔗
  • AI工具集
  • 工具箱🛠️

COPYRIGHT © 2014-2025 verysu.com . ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2

x