我在Linux上使用MySQL (CentOS,最近发行版)。我希望MySQL系统变量time_zone能够反映UTC。
当我启动MySQL会话(使用命令行工具mysql)并检查时区设置时,我会看到以下内容:
mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| NULL |
+--------------------+
1 row in set (0.00 sec)我知道(请参阅MySQL将UTC时间设置为默认时间戳),我可以将服务器配置为以UTC作为其默认时区。我想要的是设置一个客户端会话,将UTC作为缺省值。
上面的页面说我可以在SQL语法中设置一个MySQL系统变量,如下所示:
mysql> set @session.time_zone="+0:00";这导致会话时区成为本地(SYSTEM)时区:
mysql> show variables like '%zone%' ;
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | PDT |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)我想做的是将时区设置为用户的一种偏好,比如.my.cnf中的设置。
问题是,MySQL‘mysql’命令选项没有列出.my.cnf的“时区”选项,而且(当然我还是要尝试一下)
time_zone="+0:00"在我的$HOME/.my.cnf文件中导致消息
mysql: unknown variable 'time_zone=+0.00'我尝试设置TZ环境变量,这没有影响。
正如上面的StackExchange引用所述,我找到的唯一有效方法是发出SQL命令:
mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| NULL |
+--------------------+
1 row in set (0.00 sec)
mysql> set @session.time_zone="+0:00";
Query OK, 0 rows affected (0.00 sec)
mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| +0:00 |
+--------------------+
1 row in set (0.00 sec)那么,我的问题是,是否还有其他机制来设置MySQL会话变量?还是设置会话时区的其他方法?
发布于 2016-09-30 22:21:10
在default_time_zone=UTC中使用my.cnf。
参考文献:https://stackoverflow.com/questions/4562456/mysql-setting-time-zone-in-my-cnf-options-file
发布于 2018-06-28 08:36:34
在~/.my.cnf中:
[mysql]
init_command="SET time_zone='+0:00'"https://dba.stackexchange.com/questions/151182
复制相似问题