Mysql 8个小时连接断开问题解析

时间:2023-03-08 17:29:15

wait_timeout — 指的是mysql在关闭一个非交互的连接之前所要等待的秒数,其取值范围为1-2147483(Windows),1-31536000(linux),默认值28800。

interactive_time — 指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接),其取值范围随wait_timeout变动,默认值28800。

比 如我们在终端上进入mysql管理,使用的即使交互的连接,这时候,如果没有操作的时间超过了interactive_time设置的时间就会自动断开。 当然我们可以在mysql_real_connect()中使用CLIENT_INTERACTIVE来设置位交互连接模式。

如果你的mysql已经在生产环境运行,那我们可以进入mysql终端查看timeout的设置,命令如下:”show global variables like ‘%timeout%’;”

Mysql 8个小时连接断开问题解析

这时候如果要修改timeout的值又不希望重启数据库服务器,那可以使用set global wait_timeout = 200;来修改,记得global哦,这是对mysql运行时全局变量的修改,如果没有global,则修改的变量只是当前这次开启的会话的而已

mysql> set global wait_timeout=10;

mysql> show global variables like 'wait_timeout';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| wait_timeout               | 10    |
+----------------------------+-------+

上面这样查看才能得到数值改动了,如果调用总的查看指令得不到改动信息。改动之后不能重启数据库,不然修改的值会继续变成默认值。

修改操作:打开/etc/my.cnf,在属性组mysqld下面添加参数如下:

[mysqld]

interactive_timeout=28800000

wait_timeout=28800000

windows下在my.ini文中增加:

interactive_timeout=28800000

wait_timeout=28800000

不过我发现上面windows系统中修改没有成功。