Question

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.

Was it helpful?

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top