经过研究一段时间之后,发现配置文件中的两个配置要注意。test-while-idle 和 time-between-eviction-runs-millis,具体配置的说明如下。
如果想在开发环境复现这种问题的话,
首先设置mysql变量
set global interactive_timeout=30
set global wait_timeout=30 (超时时间由28800改为30秒)
然后再把项目druid的配置文件test-while-idle=false
最后启动项目,第一次请求sql才会初始化连接池,等待30+秒,再次请求sql就会出现以上错误(CommunicationsException异常也不是只有一种情况,这里解决的是java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
从题主给你内容来看 你获取连接应该就失败了那么建议题主,做以下排查
1 通过 软件或者可视化界面 能否正常登陆你的数据库
如果能正确登陆至少说明 数据库层面没有问题
2加载驱动 和 获取连接 能否能到正确的连接
如果能获取到 连接 并且打印出 对象号 说明能正确获取连接
如果这两部都没有问题 那么才要继续查询
另外 你不贴代码 直接发报错信息 还只发了一部分 我们很难回答啊
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)