mysql 变量在退出后重置

mysql 变量在退出后重置

会计/时间跟踪软件(Clients and Profits X)的 Web 界面需要与其 mysql 数据库建立开放连接。目前,Web 界面并未定期使用,因此会超时。当有人确实想要使用 Web 界面时,它会中断,直到我重新启动程序。

我试图将 OSX Snow Leopard 服务器上 mysql 中的 max_timeout 设置为 5 天,但它总是重置为默认值 8 小时。您可以从以下代码片段中看到,我设置了全局变量和会话变量,但在退出并重新登录 mysql 后,会话变量被重置。我并不假装自己是 SQL 专家,所以我可能只是在犯傻。这是在 OSX SL 服务器上,虽然我不知道它是否特定于这个平台。


mysql> set wait_timeout=432000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global wait_timeout=432000;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'wait%';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| wait_timeout  | 432000 | 
+---------------+--------+
1 row in set (0.00 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'wait%';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| wait_timeout  | 432000 | 
+---------------+--------+
1 row in set (0.00 sec)

mysql> exit
Bye
osxserver:~ admin$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.92-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW VARIABLES LIKE 'wait%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 | 
+---------------+-------+
1 row in set (0.00 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'wait%';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| wait_timeout  | 432000 | 
+---------------+--------+
1 row in set (0.00 sec)

我在 [mysqld] 下的 /etc/my.cnf 中设置了 wait_timeout,但我不确定这是否设置了会话变量或全局变量


server:~ admin$ grep wait_timeout /etc/my.cnf
wait_timeout = 432000

答案1

您可以查看有关 mysql 的这个错误报告。

http://bugs.mysql.com/bug.php?id=33123

它重点介绍了检查超时设置的几种方法。

然而,从链接中可以得出的主要结论是,wait_timeout可以被用于连接数据库服务器的连接字符串覆盖。

对于交互式客户端,它将会话 wait_timeout 设置为 28,800。有效地覆盖了您的配置设置。因此,这不能用作“测试”来查看它是否正常工作。

只要 C 和 PX 没有在其连接字符串中覆盖该值,那么你就应该没问题。

答案2

您可以尝试使用 init_connect 触发器在每个连接上设置值

例如这里http://shinguz.blogspot.com/2010/02/logging-users-to-mysql-error-log.html

答案3

您的客户端的 .my.cnf 可能有一个 wait_timeout,当您重新登录时,它会将超时重新初始化为 8 小时,从而有效地覆盖该新会话的全局值。此外,由于您的示例使用了 mysql shell,它可能会将您的会话 wait_timeout 设置为 interactive_wait_timeout。此值可以来自全局设置,也可以再次来自您的客户端的 .my.cnf。

相关内容