Search code examples
mysqlconfigurationsqlyog

MySQL's wait_timeout incorrect in SQLyog


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.


Solution

  • 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.