MySQL's wait_timeout incorrect in SQLyog

≯℡__Kan透↙ 提交于 2019-12-11 03:37:49

问题


Following this question, I set the following MySQL parameter in C:\Program Files\MySQL\MySQL Server 5.5\my.ini (the equivalent of Linux's my.cfg):

[mysqld]
wait_timeout=2147483

After restarting Windows I used SQLyog to see the effect:

  • SHOW SESSION VARIABLES LIKE 'wait_timeout' gave a result of 28800
  • SHOW GLOBAL VARIABLES LIKE 'wait_timeout' gave a result of 2147483

How come? I thought the global parameters are used as the default for each new session.


回答1:


Bonus answer: I've gone through the source code of sqlYog.

It's a feature: if the timeout setting > 28800, it is hardcoded to change the session timeout to 28800 in CommonHelper.cpp.

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());

This explains what you are seeing.




回答2:


See http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout for more information.

The answer at MySql 'wait_timeout' Global Variable vs Variable may also help you.

Basically, this is the important bit:

On thread startup, the session wait_timeout value is initialized from the global wait_timeout value or from the global interactive_timeout value, depending on the type of client (as defined by the CLIENT_INTERACTIVE connect option to mysql_real_connect()). See also interactive_timeout.



来源:https://stackoverflow.com/questions/8200825/mysqls-wait-timeout-incorrect-in-sqlyog

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!