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