MySQL的wait_timeout在SQLyog中不正确

时间:2011-11-20 10:11:32

标签: mysql configuration sqlyog

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

为什么?我认为全局参数被用作每个新会话的默认值。

2 个答案:

答案 0 :(得分:3)

奖金回答:我已经浏览了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());

这解释了你所看到的。

答案 1 :(得分:1)

参见http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout 了解更多信息。

MySql 'wait_timeout' Global Variable vs Variable的答案也可能对您有帮助。

基本上,这是重要的一点:

  

在线程启动时,会话wait_timeout值从中初始化   全局wait_timeout值或全局interactive_timeout   值,取决于客户端的类型(由   CLIENT_INTERACTIVE连接mysql_real_connect()的选项。也可以看看   interactive_timeout。