2

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.

Community
  • 1
  • 1
Jonathan Livni
  • 101,334
  • 104
  • 266
  • 359

2 Answers2

3

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.

Eljakim
  • 6,877
  • 2
  • 16
  • 16
  • You're absolutely right! Eljakim, I'm going to change the question just so this is the answer and accept it. you may wish to remove your other answer as it will become irrelevant – Jonathan Livni Nov 20 '11 at 19:16
1

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.

Community
  • 1
  • 1
Eljakim
  • 6,877
  • 2
  • 16
  • 16
  • Placed both `wait_timeout=2147483` and `interactive_timeout=2147483` under `[mysqld]` - it did not help – Jonathan Livni Nov 20 '11 at 11:55
  • Are you certain that SQLyog is not the issue? On the screen where you define the connection you can specify session timeout values. – Eljakim Nov 20 '11 at 15:59