【问题标题】:MySql 'wait_timeout' Global Variable vs VariableMySql 'wait_timeout' 全局变量与变量
【发布时间】:2011-04-30 00:44:10
【问题描述】:

我正在尝试通过将“wait_timeout”临时减少到 60 秒而不是默认的 28800 秒来重现连接超时错误。

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

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

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

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

我在 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)

【问题讨论】:

    标签: mysql


    【解决方案1】:

    来自 MySQL 文档:wait_timeout

    线程启动时,会话wait_timeout值从全局初始化 wait_timeout 值或来自全局 interactive_timeout 值,具体取决于 客户端类型(由 CLIENT_INTERACTIVE 连接选项定义 mysql_real_connect())。另请参见 interactive_timeout。

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

    还要注意:

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

    (正如 Vladislav 指出的,上述注释应该被忽略,因为 this bug has been fixed 并且超时也适用于与命名管道或共享内存的连接,但显然文档尚未更新。)

    【讨论】:

    • 感谢您的快速回复。我修改了 my.ini 文件中的 interactive_timeout 全局变量,这可以解决问题
    • 该超时仅适用于 TCP 和 Unix 域套接字是过时的信息,文档中的错误。这在 2009 年已修复 (bugs.mysql.com/bug.php?id=31621)
    • @Vladislav:谢谢,我不知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多