this question之后,我在C:\Program Files\MySQL\MySQL Server 5.5\my.ini中设置了以下MySQL参数(相当于Linux的my.cfg):

[mysqld]
wait_timeout=2147483

重新启动Windows后,我使用SQLyog查看效果:
SHOW SESSION VARIABLES LIKE 'wait_timeout'的结果为28800
SHOW GLOBAL VARIABLES LIKE 'wait_timeout'的结果为2147483
怎么会?我认为全局参数被用作每个新会话的默认参数。

最佳答案

额外的回答:我已经看过了sqlYog的源代码。
这是一个feature:如果超时设置> 28800,则它是硬编码的
CommonHelper.cpp中将会话超时更改为28800。

3314   //Session wait_timeout3315   timeout = conn->m_strwaittimeout.GetAsUInt32();
3316
3317   if(timeout > 28800 || timeout <= 0)
3318     conn->m_strwaittimeout.SetAs("28800");
3319
3320   strtimeout.Sprintf("/*!40101 set @@session.wait_timeout=%s */", conn->m_strwaittimeout.GetString());
3321   mysql_options(*pmysql, MYSQL_INIT_COMMAND, strtimeout.GetString());

这解释了你所看到的。

09-27 09:43