2011-04-30 105 views
8

我试图通过暂时将“wait_timeout”减少到60秒而不是默认的28800秒来重现连接超时错误。MySql'wait_timeout'全局变量与变量

我在my.ini文件中添加了wait_timeout = 60并重新启动了MySql。不幸的是,我仍然无法重现错误情况(除非我想等待28800秒)。

下面的查询似乎表明在全局变量级别将“wait_timeout”设置为60,但对于常规变量仍然设置为28800秒(与会话变量相同)。

我该如何解决这个问题? my.ini中的设置如何被覆盖?

感谢您的任何建议,因为我仍然是一位MySql管理员noob。 :)

我在Windows XP上运行MySql 5.5.10。

mysql> show variables like 'wait_timeout'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 28800 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

mysql> show global variables like 'wait_timeout'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 60 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

回答

7

从MySQL文档:wait_timeout

在线程启动,会话WAIT_TIMEOUT值从全球 WAIT_TIMEOUT值或从全局interactive_timeout值初始化,这取决于 客户端类型(由CLIENT_INTERACTIVE连接选项定义为 mysql_real_connect())。另请参阅interactive_timeout。

您还应该降低ini文件中的interactive_timeout全局变量。

还要注意的是:

此超时仅适用于TCP/IP和Unix套接字文件连接, 不连接使用命名管道或共享内存制造。

(如弗拉指出上述说明应被忽略,因为this bug has been fixed和超时适用于具有命名管道或共享存储器连接,以及,但显然该文档没有被更新。)

+2

感谢您的快速回复。我修改了my.ini文件中的interactive_timeout全局变量,它诀窍 – Justin 2011-04-30 02:09:45

+0

该超时仅适用于TCP,而Unix域套接字是过时的信息,文档中存在错误。这在2009年得到修复(http://bugs.mysql.com/bug.php?id=31621) – 2011-04-30 23:48:19

+0

@Vladislav:thnx,我不知道。 – 2011-05-01 00:25:40