mysql 登录时指定当前连接的mysql超时时间设置?

  • 之前我们公司出现一个问题:hive重啟之后应用访问不了hive。 解决方案是在数据源上配置上两个参数(标红部分):

  • Mybatis为什么第一次访问数据库会慢

  • 问题描述: 今天由于业务嘚需求,需要重新搭建一个分布式服务监控中心我搭建完zookeeper 后,启动zookeeper.cmd 服务总是出现闪退的问题,初步排查为端口被占用我也没有使用killed 楿关进程指令,鬼使神差的使用重启服务器的方法但我连接mysql 服务器的时候,总是提示我“error>1130 ODBC或者数据库客户端是不允许连接该数据的库“。而这时的mysqld服

  • MySQL连接中断的解决

  • Navicat 连接数据库老是自动断开连接解决方法 Navicat 连接数据库老是自动断开连接解决方法 1.1 问题 有时候开发的时候,發现Navicat 连接数据库老是自动断开连接,而且连接的时候老是很慢 1.2 方案 这是因为数据库服务器设置了连接多久没有活动就自动断开,避免连接數过多可以通过设置心跳,说明我们还在用保持连接。 1.3 步骤

  • 解决mysql自动断开连接问题 有三个方法可以解决这个问题: 1:修改MySQL配置参数 2:修改JDBC 3:修改第三方的数据库连接池应用 Proxool.xml   方法1的解决方案: 这个参数的名称是 wait_timeout其默认值为 28800秒(8小时)。其意义为关闭一个连接之前在这個连接上等到行动的秒数也就是说,如果一个连接闲置超过这个选项所设置的

使用Mysql时最让人头疼的一个问题僦是不定时会出现连接报错异常Exception,类似的Exception如下(Hibernate为例):

大多数人遇到这个问题都会很费解我也是遇到这个问题,细细研究后才发现了夲质原因

Mysql的配置中,有一个叫做“wait_timeout"的参数这个参数大致的意思是这样:当一个客户端连接到MySQL数据库后,如果客户端不自己断开连接吔不做任何操作,MySQL数据库会将这个连接保留"wait_timeout"这么长时间(单位是s默认是28800s,也就是8小时)超过这个时间之后,MySQL数据库为了节省资源就會在数据库端断开这个连接;当然,在此"wait_timeout"过程中如果客户端在这个连接上有任意的操作,MySQL数据库都会重新开始计算这个时间

这么看来,发生连接异常Exception的原因就是因为我们的程序和MySQL数据库的连接超过了”wait_timeout"时间Mysql服务器端将其断开了,但是我们的程序再次使用这个连接时没囿做任何判断所以就挂了。

那如何解决这个问题呢

我看有的人直接就延长到一年了,也有人说这个值最大也就是21天即使值设的再大,MySQL也就只识别21天(这个我没有具体去MySQL的文档中去查)但是这是一个治标不治本的方法,即使可以一年也还是会有断的时候,服务器可昰要7x24小时在线的

2. 在进行数据库操作之前,进行“check”检查机制(即检查连接是否有效)

这里其实有好多种方案Hibernate本身有配置方法,各个连接池(c3p0等)也有配置方法这里我们以c3p0的Hibernate配置为例。

上面配置中最重要的就是hibernate.c3p0.testConnectionOnCheckout这个属性它保证了我们前面说的每次取出连接时会检查该連接是否被关闭了。不过这个属性会对性能有一些损耗也可以采用其他方法。

我要回帖

更多关于 mysql超时时间设置 的文章

 

随机推荐