Su的技术博客

  • 首页
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • AI
  • Other
  • 工具
  • 打赏
  • 关于
路很长,又很短
  1. 首页
  2. 事故复盘
  3. 正文
                           

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

2023-08-17 1110点热度 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. 殷浩详解DDD系列 第一讲 - Domain Primitive
  2. 浅析设计模式4——模板方法模式
  3. 手把手教你实战TDD
  4. 记一次升级MySQL驱动包引发的事故
  5. 设计模式在外卖营销业务中的实践
  6. 定时任务原理方案综述
  7. mysql-connect-java驱动从5.x升级到8.x的CST时区问题
  8. 超实用的IDEA插件推荐!百万级下载量
标签: 原创 线上事故 事故复盘 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
取消回复

最新 热点 推荐
最新 热点 推荐
单体分层应用架构剖析 MySQL事务死锁问题排查 浅谈DDD中的聚合 高并发场景下JVM调优实践之路 ChatGPT的探索与实践 生产环境的CMS垃圾回收,一定要这样配置参数
Log4j框架疯狂写日志,导致磁盘打满问题排查高并发场景下JVM调优实践之路3.编程语言的演化(译)4.架构风格 vs. 架构模式 vs. 设计模式(译)5.单体架构(译)6.分层架构(译)
腾讯的这道面试题,我懵了... —— Redis的hashtable是如何扩容的 MySQL8.0驱动升级事故——之三 京东购物车如何提升30%性能 面试题:系统出现高CPU的原因是什么 生产环境的CMS垃圾回收,一定要这样配置参数 RocketMQ 很慢?引出了一个未解之谜

AIGC (1) BASE (1) bigkey (1) CAP (1) codeium (2) Copilot (2) hotkey (1) inject (1) jar包 (1) mvc (1) OOP (1) UML (1) vivo (2) 事务隔离级别 (1) 人工智能 (2) 代码质量 (1) 低耦合 (1) 依赖倒置原则 (1) 六边形架构 (1) 分层架构 (3) 分布式事务 (1) 分页 (1) 单体架构 (2) 可复用性 (1) 可读性 (1) 合同 (1) 后端开发 (1) 命名 (1) 四色建模法 (1) 垃圾回收器 (1) 开源 (1) 性能调优 (4) 智能助手 (1) 架构模式 (1) 架构设计 (4) 架构风格 (1) 模块 (1) 死锁 (1) 物流 (1) 系统架构 (4) 缓存穿透 (1) 缓存雪崩 (1) 编程助手 (3) 编程技能 (1) 编程语言 (2) 聚合 (1) 软件工程师 (1) 软件架构 (2) 驱动升级 (1) 高内聚 (1)

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

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2