我一直在尝试解决一个我认为可以通过在我的 CentOS 机器上更改 MySQL(5.1.67)中的 wait_timeout 变量来解决的问题。
所以,我用我想要的值(180)更新了 /etc/my.cnf,并重新启动了 MySQL,但现在我惊讶地发现我得到不同的 wait_timeout 值取决于我的显示方式(见下文) :
mysql> show global variables like "%wait%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 180 |
+--------------------------+-------+
3 rows in set (0.00 sec)
mysql> show variables like "%wait%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+--------------------------+-------+
3 rows in set (0.00 sec)
我猜第二个查询显示的是会话变量,而不是全局变量,但我不明白为什么它们会有所不同,在退出我的 MySQL 会话后,重新启动 MySQL,然后再次登录。他们怎么不一样?而且,我想,如何确保相同的值(180)在所有内容中都是一致的?
任何建议/帮助表示赞赏。谢谢。
该文件指出
由于您是通过命令行而不是脚本进行连接,因此 CLIENT_INTERACTIVE 自动用作连接选项是有意义的。因此,
interactive_timeout
正在使用该值,默认为 28800。要使会话
wait_timeout
值为 180,请将interactive_timeout
值更新为 180。至于为什么会这样,我只能推测。然而,作为一名程序员,我知道每次检查执行某个操作时只需要查找一个值而不是检查多个值,并确保每次我总是检查所有这些值更有用想检查一些东西。
更明确地说,在这种情况下,每次
wait_timeout
需要该值时,最好只检查它,而不是同时检查wait_timeout
andinteractive_timeout
。它通过使用适当的值自动初始化会话来帮助保持代码的可维护性wait_timeout
,然后只需要检查一个值。否则会导致错误,因为每次需要执行涉及此超时的操作时都可能无法检查这两个值。