MySQL's wait_timeout неверен в SQLyog - PullRequest
2 голосов
/ 20 ноября 2011

После этого вопроса я установил следующий параметр MySQL в C:\Program Files\MySQL\MySQL Server 5.5\my.ini (эквивалент my.cfg в Linux):

[mysqld]
wait_timeout=2147483

После перезапуска Windows я использовал SQLyog , чтобы увидеть эффект:

  • SHOW SESSION VARIABLES LIKE 'wait_timeout' дал результат 28800
  • SHOW GLOBAL VARIABLES LIKE 'wait_timeout' дал результат 2147483

Как получилось? Я думал, что глобальные параметры используются по умолчанию для каждого нового сеанса.

Ответы [ 2 ]

3 голосов
/ 20 ноября 2011

Бонусный ответ: я просмотрел исходный код sqlYog.

Это feature: если настройка тайм-аута > 28800, это жестко закодировано изменить время ожидания сеанса на 28800 в 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());

Это объясняет, что вы видите.

1 голос
/ 20 ноября 2011

См. http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout для получения дополнительной информации.

Ответ на MySql 'wait_timeout' Глобальная переменная против переменной также может помочь вам.

В основном,это важный бит:

При запуске потока значение сеанса wait_timeout инициализируется из глобального значения wait_timeout или из глобального значения interactive_timeout, в зависимости от типа клиента (как определено соединением CLIENT_INTERACTIVEвозможность mysql_real_connect ()).Смотрите также interactive_timeout.

...