MySQL交互式会话变量丢失:控制超时的参数及延长方法
MySQL会话超时与用户变量丢失问题解答
1. 控制变量丢失行为的超时参数
控制该行为的核心参数是**interactive_timeout和wait_timeout**:
interactive_timeout:适用于mysql命令行这类交互式会话,定义了连接空闲时长超过阈值后,服务器会主动断开连接。wait_timeout:适用于应用程序连接这类非交互式会话,作用逻辑与前者一致。
用户变量(如@start、@finish)属于会话级变量,仅存在于当前连接的生命周期内。当连接因超时被服务器断开后,变量会被销毁;重连后新会话中没有这些变量的定义,因此查询结果为NULL。
2. 是否可以延长该超时时间?
可以通过临时或永久方式调整超时时间:
临时调整(重启服务后失效):
拥有管理员权限的情况下,执行以下全局设置命令:SET GLOBAL interactive_timeout = 3600; -- 示例设置为1小时,可按需修改秒数 SET GLOBAL wait_timeout = 3600;注意:该设置对当前已建立的会话不生效,需重新连接后才会应用新的超时值。
永久调整:
修改MySQL配置文件(Linux常见路径为/etc/my.cnf或/etc/mysql/my.cnf,Windows为my.ini),在[mysqld]配置段添加或修改:interactive_timeout = 3600 wait_timeout = 3600保存配置后重启MySQL服务,新的超时设置将永久生效。
提示:超时时间并非越长越好,过长会导致大量空闲连接占用服务器资源,需结合实际业务场景合理设置。
内容的提问来源于stack exchange,提问作者xpt
相关产品推荐
相关产品推荐

