数据库连接超时的问题

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was43810 seconds ago.The last packet sent success
fully to the server was 43810 seconds ago, which  is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server con
figured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3246)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1917)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)
        at com.mindpro.taxi.call.DBConnection.executeUpdate(DBConnection.java:64)
        at com.mindpro.taxi.call.PassengerService$UdpServiceThread.updatePassenger(PassengerService.java:259)
        at com.mindpro.taxi.call.PassengerService$UdpServiceThread.run(PassengerService.java:209)
Caused by: java.net.SocketException: Software caused connection abort: socket write error
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(Unknown Source)
        at java.net.SocketOutputStream.write(Unknown Source)
        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
        at java.io.BufferedOutputStream.flush(Unknown Source)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3227)
        ... 10 more


autoReconnect=true&failOverReadOnly=false 似乎不起作用

引用:http://blog.youkuaiyun.com/mqboss/article/details/6659001

1.按照错误的提示,可以在JDBC URL中使用autoReconnect属性,实际测试时使用了autoReconnect=true&failOverReadOnly=false,不过并未起作用,使用的是5.1版本,可能真像网上所说的只对4之前的版本有效。

2.没办法,只能修改MySQL的参数了,wait_timeout最大为31536000即1年,在my.cnf中加入:

[mysqld]

wait_timeout=31536000

interactive_timeout=31536000

重启生效,需要同时修改这两个参数。



### 解决IntelliJ IDEA 插件中的数据库连接超时问题 当遇到 IntelliJ IDEA 中的数据库连接超时时,通常是因为默认配置下的连接参数不适合特定环境或网络状况。调整这些设置可以帮助解决问题。 #### 修改数据库连接属性 为了防止连接超时,在创建数据源时应仔细配置连接池和其他相关属性。可以通过编辑 `data source` 的高级选项来实现这一点[^1]: - **Connection Timeout**: 设置合理的连接建立超时时间,默认通常是几秒。增加此值可减少因短暂网络延迟导致的失败。 - **Socket Timeout (Query Timeout)**: 定义读取操作的最大等待时间。对于大型查询或者响应较慢的数据源来说非常重要。 - **Idle Connection Test Period**: 控制闲置连接测试的时间间隔,确保长时间未使用的连接仍然有效。 ```sql -- Example of setting parameters within a JDBC URL string jdbc:mysql://localhost:3306/mydb?connectTimeout=5000&socketTimeout=10000&idleConnectionTestPeriod=300 ``` #### 使用持久化连接管理工具 考虑采用更先进的库来进行优化和满足性问题求解,例如 Choco 或 JaCoP 这样的约束编程技术虽然主要用于其他领域,但在某些复杂场景下也可能间接有助于改善性能表现[^2]。不过针对数据库连接的具体情况,则建议优先尝试上述直接的方法。 如果以上方法仍无法彻底解决超时现象,还可以探索使用 OptaPlanner 来处理业务规划与资源调度方面的问题,但这同样不是直接应对数据库连接挑战的最佳途径。 #### 调整项目结构和依赖关系 有时将必要的文件放置在同一目录并适当调整其内部引用路径也能起到一定作用。比如按照说明文档指示正确设置URL列表等措施可能会有所帮助[^3]。 最后提醒开发者们注意保存工作进度,并定期备份重要资料以防意外发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值