2011-04-30 104 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