Веб-интерфейс для программного обеспечения учета / учета рабочего времени (Clients and Profits X) требует открытого подключения к его базе данных mysql. В настоящее время веб-интерфейс не используется на регулярной основе, и это время истекло. Когда кто-то ДЕЙСТВИТЕЛЬНО хочет использовать веб-интерфейс, он не работает, пока я не перезапущу программу.
Я пытаюсь установить max_timeout в mysql на сервере OSX Snow Leopard на 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)
У меня установлен wait_timeout в /etc/my.cnf под [mysqld], хотя я не уверен, устанавливает ли это переменную сеанса или глобальную переменную
server:~ admin$ grep wait_timeout /etc/my.cnf
wait_timeout = 432000
Вы можете попробовать использовать триггер init_connect для установки значения при каждом подключении.
пример здесь http://shinguz.blogspot.com/2010/02/logging-users-to-mysql-error-log.html
Вы можете просмотреть этот отчет об ошибке в mysql.
http://bugs.mysql.com/bug.php?id=33123
В нем выделено несколько способов проверить настройки тайм-аута.
Однако главное, что нужно вынести из ссылки, - это то, что wait_timeout может быть переопределен строкой подключения, используемой для подключения к серверу базы данных.
В случае интерактивного клиента он устанавливает для сеанса wait_timeout значение 28 800. Эффективное переопределение ваших настроек конфигурации. Так что это нельзя использовать в качестве «теста», чтобы проверить, работает ли он.
Пока C&P X не переопределяет это значение в своей строке подключения, все должно быть в порядке.
У вашего клиента .my.cnf может быть wait_timeout, который повторно инициализирует тайм-аут до 8 часов при повторном входе в систему, эффективно переопределяя глобальное значение для этого нового сеанса. Кроме того, поскольку в вашем примере используется оболочка mysql, она может установить для сеанса wait_timeout значение interactive_wait_timeout. Это значение может быть получено из глобальных настроек или, опять же, из .my.cnf вашего клиента.