You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java JDBC连接MySQL数据库时出现StackOverflowError如何解决

问题根因

你遇到的栈溢出是MySQL 8.0.11到8.0.27版本JDBC驱动的已知bug,当连接默认启用SSL且握手阶段触发服务端警告时,NativeProtocol类下的convertShowWarningsToSQLWarnings、scanForAndThrowDataTruncation、readAllResults三个方法会进入无限递归调用,最终耗尽栈空间抛出StackOverflowError。

修复方案
  • 临时规避:在JDBC连接URL后追加关闭SSL和截断警告检测的参数,修改后的连接代码如下:
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3305/testDB?useSSL=false&jdbcCompliantTruncation=false", "root", "");

本地开发场景下该方案可以快速解决问题,不影响正常功能使用。

  • 永久修复:将项目依赖的mysql-connector-java(也叫mysql-connector-j)升级到8.0.28及以上版本,官方已在该版本修复了递归调用的bug,不需要修改连接配置即可正常运行。
  • 若生产环境必须开启SSL连接:需要提前将MySQL服务端的SSL证书导入到JRE的cacerts信任库中,避免SSL握手阶段产生警告触发递归逻辑。

内容的提问来源于stack exchange,提问作者KSV97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:18:03