随记:解决MySQL server has gone away/Lost connection to MySQL server during query的方法

笔者是连接超时错误,即wait_timeout设置时间过短造成。
之前在使用MySQL时发现了一个小问题,当MySQL长时间没有请求发起,再次发送请求时,会出现类似连接超时的错误。但是这并不是MySQL语句出现语法错误的问题,再一次输入待执行语句时,正常执行不会再次出现错误。
在这里插入图片描述
虽然这一问题对正常执行SQL语句不会产生太大影响,直接再次执行语句即可解决问题。但是若需要执行长SQL语句时,出现类似连接超时错误再次输入时,效率就降低了。那么如何根本解决这个问题?即长时间没有请求发起,再次发送请求时,不会出现超时问题。
语句1:查看启动MySQL到执行当前指令时经历的时间(默认单位:秒)

show global status like 'uptime';
表示启动MySQL到执行当前指令时经历了19s
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 19    |
+---------------+-------+

语句2:查看MySQL无操作连接等待时间(默认单位:秒),即超过该时间需重连MySQL

show global variables like 'wait_timeout';
表示MySQL连接在无操作120秒后被自动关闭
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 120   |
+---------------+-------+

举个例子:在间隔超过120s的两个时间点执行两次语句1
在这里插入图片描述
上例分别在启动MySQL后的1036s执行了语句1,中间不执行任何其它语句,在启动MySQL后的1362s再次执行了语句1,时间间隔326s>120s,出现了超时连接错误。
我们这时发现了默认设置为120s后无操作时自动关闭,时间较短,需要将它更改为较大的时间。那么如何更改这个wait_timeout。
我们需要找到一个my.ini或my.cnf文件。一般Linux下的是my.cnf文件,Win下的是my.ini文件,一般my.cnf文件在Linux上是位于路径“/etc/my.cnf”下,my.ini文件在Win上位于安装目录的根目录下。那么如果忘记了MySQL相关文件的安装目录/地址怎么办?

show variables like 'datadir';#查找目录

在这里插入图片描述
查找到安装MySQL时的data文件夹,一般my.ini或my.cnf文件就在data文件夹的上级目录中。
在这里插入图片描述
选择my.ini或my.cnf文件,将wait_timeout和interactive_timeout后面的值更改为2880000。(数2880000可根据自己需要更改)
在这里插入图片描述
在这里插入图片描述
保存并重启MySQL,检查是否解决问题。发现下图中两条语句执行时间间隔为198s,大于原120s的wait_timeout,这时没有出现连接超时问题。
在这里插入图片描述
▲参考:
https://blog.csdn.net/lovemysea/article/details/79121154
https://www.php.cn/mysql-tutorials-453610.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值