mysql怎么设置超时时间

MLGKO 发布于 2016/09/08 15:54
阅读 1K+
收藏 0

使用连接池怎么设置连接超时,就是获取到连接 由于网络中断或者网络环境非常差的话.执行一个Mysql的超时,这个超时怎么设置,在网上说在Url里面添加以下connectionTimeOut例如:

jdbc:mysql://ip:3306/db?useUnicode=true&characterEncoding=UTF-8&connectTimeout=30000&socketTimeout=60000但是connectionTimeout好像没用啊

加载中
0
温安适
温安适

你使用的是什么连接池目前不清楚:

但是如果使用Druid可以配置如下:

<!-- 超过时间限制是否回收 -->  
<property name="removeAbandoned" value="true" />  
<!-- 超时时间;单位为秒。180秒=3分钟 -->  
<property name="removeAbandonedTimeout" value="180" />  
<!-- 关闭abanded连接时输出错误日志 -->  
<property name="logAbandoned" value="true" />



0
MLGKO
MLGKO

引用来自“混元归一”的评论

你使用的是什么连接池目前不清楚:

但是如果使用Druid可以配置如下:

<!-- 超过时间限制是否回收 -->  
<property name="removeAbandoned" value="true" />  
<!-- 超时时间;单位为秒。180秒=3分钟 -->  
<property name="removeAbandonedTimeout" value="180" />  
<!-- 关闭abanded连接时输出错误日志 -->  
<property name="logAbandoned" value="true" />



这个参数是系统会进行无效的Connection的回收 那么在回收之前我获得了连接 获得之后正好网络中断 然后拿着这个链接去查询数据库,但是由于网络断掉了他会等待超时 到了超时之后才会抛出异常 这个异常还不是超时的异常,我也尝试设置MyBatis的defaultStatementTimeout这个参数,但是也不好用。我的这是过程是启动服务成功之后,打开服务器的防火墙,然后去连接池获取连接,获取到了之后做一个查询,然后查询会等待20多秒才抛出异常,我想在指定时间内没有返回直接抛出异常
温安适
温安适
还有,需要注意数据库自动重连的时间
温安适
温安适
你设置的defaultStatementTimeout的单位是秒,你尝试设置过的大小是?
0
温安适
温安适

可以在对应的语句中加入timeout例如:

<insert  
  id="insert"  
  .... 
  timeout="20">



温安适
温安适
这就跟defaultStatementTimeout作用一样,稍等我在想想你的问题
返回顶部
顶部