1

我有一个项目,间歇性地将 time_zone 值从用户定义的值更改为 SYSTEM,我试图确定 MySQL 是否认为“当前会话”(MySQL TimeZone)是连接,或者是工作站 IP连接来自。

基本上,如果不是每个连接,那么其他东西正在连接到 MySQL 并将 time_zone 值更改回 SYSTEM,这会对我已经连接的软件产生影响。

如果是每个连接,那么我将重新尝试找出 time_zone 被重置的位置。

有关更多信息,我的项目是用 Delphi XE3 编写的,使用 MyDAC 组件进行 DB 连接。当项目加载时,我读取一个连接文件,如果设置了 time_zone 字符串,我执行“Set Time_zone”查询。该连接在应用程序运行生命周期内保持活动状态,并且对应用程序是全局的(即我不创建/连接从该应用程序到数据库的其他连接)。

感谢你的协助!

4

1 回答 1

1

一个 MySQL 会话对应一个连接。

MySQL 服务器根据系统变量的值在超时后自动断开空闲会话wait_timeout,默认为 28800 秒(8 小时)。听起来 Delphi 会自动重新连接您的会话,但是当这种情况发生时,每个会话的设置将会丢失。

您应该更改您的应用程序,以便在长时间空闲时发送时区设置。您也可以增加wait_timeout(最大值为 2147483,24.85 天)。

于 2015-09-22T15:47:44.243 回答