`

连接数据库超时设置autoReconnect=true

阅读更多

1,问题现象:

com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 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 configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem. 

解决办法: 
如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat. 
    不用hibernate的话, connection url加参数: autoReconnect=true 
    用hibernate的话, 加如下属性: 
        <property name="connection.autoReconnect">true</property> 
        <property name="connection.autoReconnectForPools">true</property> 
        <property name="connection.is-connection-validation-required">true</property>
 
    要是还用c3p0连接池: 
        <property name="hibernate.c3p0.acquire_increment">1</property> 
        <property name="hibernate.c3p0.idle_test_period">0</property> 
        <property name="hibernate.c3p0.timeout">0</property> 
        <property name="hibernate.c3p0.validate">true</property>

 以上转载链接地址:http://blog.aqsc.cn/article.php?type=blog&itemid=1016

2,另外:关于Mysql链接参数的说明如下:

 

mysql JDBC Driver

常用的有两个,一个是gjt(Giant Java Tree)组织提供的mysql驱动,其JDBC Driver名称(JAVA类名)为:org.gjt.mm.mysql.Driver

详情请参见网站:http://www.gjt.org/

或在本网站下载mysql JDBC Driver(mm.jar)

另一个是mysql官方提供的JDBC Driver,其JAVA类名为:com.mysql.jdbc.Driver

驱动下载网址:http://dev.mysql.com/downloads/,进入其中的MySQL Connector/J区域下载。

mysql JDBC URL格式如下:

jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]...

现只列举几个重要的参数,如下表所示:

参数名称 参数说明 缺省值 最低版本要求
user 数据库用户名(用于连接数据库)   所有版本
password 用户密码(用于连接数据库)   所有版本
useUnicode 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true false 1.1g
characterEncoding 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk false 1.1g
autoReconnect 当数据库连接异常中断时,是否自动重新连接? false 1.1
autoReconnectForPools 是否使用针对数据库连接池的重连策略 false 3.1.3
failOverReadOnly 自动重连成功后,连接是否设置为只读? true 3.0.12
maxReconnects autoReconnect设置为true时,重试连接的次数 3 1.1
initialTimeout autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒 2 1.1
connectTimeout 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本 0 3.0.1
socketTimeout socket操作(读写)超时,单位:毫秒。 0表示永不超时 0 3.0.1

 

对应中文环境,通常mysql连接URL可以设置为:

jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk&autoReconnect=true&failOverReadOnly=false

在使用数据库连接池的情况下,最好设置如下两个参数:

autoReconnect=true&failOverReadOnly=false

需要注意的是,在xml配置文件中,url中的&符号需要转义成&。比如在tomcat的server.xml中配置数据库连接池时,mysql jdbc url样例如下:

jdbc:mysql://localhost:3306/test?user=root&amp;password=&amp;useUnicode=true&amp;characterEncoding=gbk

&amp;autoReconnect=true&amp;failOverReadOnly=false

其他参数请参见mysql jdbc官方文档: MySQL Connector/J Documentation

 

本文来源于:http://blog.csdn.net/bluesnail216/article/details/15810119

分享到:
评论

相关推荐

    dbcp连接池优化

    - `minEvictableIdleTimeMillis`: 设置连接在被驱逐前的最短空闲时间,避免频繁地驱逐有效连接。 4. **限制连接池大小**: - `maxActive`: 控制同时活动的连接数,避免因连接数过多而引起的资源浪费。 - `...

    MySQL数据库连接超时(Wait_timeout)问题总结.pdf

    当应用程序遇到这种问题时,一种常见的解决方案是在数据库连接字符串中添加"autoReconnect=true"选项,试图在断开连接后自动重新连接。然而,对于MySQL 4.0之前的版本,这种方法可能有效,但在较新的MySQL版本中,...

    关于MySQL的wait-timeout连接超时问题报错解决方案.pdf

    4. 考虑使用 Connector/J 连接属性:在使用 Hibernate 进行数据库操作时,可以考虑使用 Connector/J 连接属性,例如 autoReconnect=true,来避免连接超时问题。 5. 及时释放连接:在使用完毕连接后,需要及时释放...

    MySQL wait_timeout连接超时

    3. **使用`autoReconnect=true`属性**:如果你的应用使用的是MySQL的JDBC驱动,可以在连接字符串中添加`autoReconnect=true`属性。这将使驱动在检测到连接断开后尝试重新建立连接。然而,这种方法并非总是可靠,因为...

    关于MySQL的wait-timeout连接超时问题报错解决方案.docx

    3. 使用 Connector/J 连接属性 'autoReconnect=true',避免连接超时的问题。 结论 MySQL 连接超时问题是常见的错误之一,解决该问题需要了解 wait_timeout 参数的重要性,并正确地使用 show variables 命令。同时...

    JDBC连接多种数据库的方法

    此外,JDBC连接参数可以进一步定制,如设置连接超时、自动提交模式、字符集等。这些参数通常在连接URL中指定,例如: ``` String url = "jdbc:mysql://localhost:3306/myDB?useUnicode=true&characterEncoding=utf8&...

    Spring Boot 配置MySQL数据库重连的操作方法

    要解决连接超时问题,我们可以在连接 URL 上添加 autoReconnect=true 来解决。例如: jdbc:mysql://localhost:3306/test?autoReconnect=true 然而,需要注意的是,MySQL 不推荐使用 autoReconnect 配置,因为如果...

    常用JDBC驱动与连接字符串整理.docx

    在使用数据库连接池时,如C3P0、HikariCP或Apache DBCP等,建议添加特定参数以优化性能和处理断开连接的场景,例如MySQL中的`autoReconnect=true`和`failOverReadOnly=false`。 在构建连接字符串时,应确保指定正确...

    tomcat数据库连接池配置

    autoReconnect=true"/&gt; ``` - `name`属性用于标识数据源名称。 - `auth`属性设置为`Container`表示由容器管理认证过程。 - `type`属性指定了数据源类型。 - `maxActive`, `maxIdle`, `maxWait`分别表示最大...

    tomcat配置数据库断开频繁用c3p解决.zip

    - `maxIdleTime`:设置连接的最大空闲时间,超过这个时间的连接会被自动回收,防止因长时间未使用的连接耗尽资源。 - `checkoutTimeout`:设置获取连接的超时时间,如果在指定时间内无法获取到连接,将会抛出异常...

    Mysql JDBC Url参数说明

    6. **connectTimeout**: 设置连接超时时间(毫秒)。 ```text jdbc:mysql://localhost:3306/mydb?connectTimeout=10000 ``` 7. **useAffectedRows**: 是否返回实际受影响的行数,而不是插入ID(对于`INSERT`...

    Tomcat6.doc数据库连接池配置

    在IT行业中,数据库连接池是应用服务器管理数据库连接的一种机制,它可以有效地管理和复用数据库连接,提高系统的性能和效率。Tomcat作为一款流行的Java Servlet容器,支持多种数据库连接池的配置。在Tomcat 6.0版本...

    Tomcat6.0+MyEclipse6.0+mysql5.0数据库连接池配置![参考].pdf

    - `maxActive`、`maxIdle`、`maxWait`用于控制连接池的最大活动连接数、最大空闲连接数和等待超时时间。 2. **配置Web应用的`web.xml`**: 接下来,在工程的`WEB-INF/web.xml`文件中添加资源引用(`resource-ref`...

    jdbc连接数据库的方法和文件

    - `autoReconnect`:是否自动重连,可设置为 `true` 或 `false`。 - `maxReconnects`:最大重连次数。 - `maxReconnectInitialTimeout`:初始重连超时时间。 - `maxRows`:限制返回的最大行数。 - `useUnicode`:...

    各种常用数据库JDBC的url写法

    其中,`hostname`是数据库服务器地址,`port`通常是3306,`database`是要连接的数据库名,`parameters`是可选的连接参数,如`useSSL=false`或`autoReconnect=true`。 2. **Oracle** Oracle数据库的JDBC URL相对...

    关于MySql链接url参数的设置

    5. `autoReconnect`: 如果数据库连接意外中断,设置为`true`将尝试自动重新连接。这对于避免因网络问题导致的断开连接很有帮助。 6. `autoReconnectForPools`: 仅在使用数据库连接池时启用,用于控制连接池的重连...

    Spring Boot如何解决Mysql断连问题

    autoReconnect=true 这将使得连接在断开后自动重连。 第二种方法是在 application.properties 文件中添加以下配置项: spring.datasource.test-on-borrow=false spring.datasource.test-while-idle=true spring....

    数据源使用代码tomcat + jsp

    - **连接池参数**:合理设置连接池参数,如`maxActive`和`maxIdle`,可以显著提高数据库访问效率。 - **安全性和权限**:考虑使用不同的用户账户来访问数据库,避免使用管理员级别的账户进行日常操作。 - **错误处理...

Global site tag (gtag.js) - Google Analytics