MySQL:在my.cnf选项文件中设置time_zone

emx*_*emx 15 mysql timezone my.cnf

在MySQL中,您可以设置一个名为time_zone的会话变量来更改时区.这在查看来自其他国家/地区的时间戳时非常有用.这是一个例子:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-12-30 18:59:18 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone='Brazil/East';
Query OK, 0 rows affected (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-12-30 09:59:29 |
+---------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

是否可以将其放在选项文件中,例如.my.cnf?

当我尝试时,它不起作用.我得到的只是:

mysql: unknown variable 'time_zone=Brazil/East'
Run Code Online (Sandbox Code Playgroud)

ajr*_*eal 17

它应该是

default_time_zone=Brazil/East
Run Code Online (Sandbox Code Playgroud)

详细信息:http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone

选项文件格式= default_time_zone

  • 当将其放在我的`/ etc / mysql / conf.d / mysql.cnf`中的[mysql]部分下时,我正在获取mysql:[ERROR]未知变量'default_time_zone = Brazil / East'。版本5.7.20。 (3认同)
  • 将其放置在[mysqld]下会导致服务器无法重新启动并退出:mysql.service的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参见“ systemctl status mysql.service”和“ journalctl -xe”。 (3认同)

And*_*rew 5

我不确定 Xampp 中发生了什么变化,但只有当您将此行放在正确的位置时,此解决方案才有效。相信我,我尝试了很多次,并且必须进行相当彻底的搜索才能找到这个解决方案。

default-time-zone = "+00:00"
Run Code Online (Sandbox Code Playgroud)

例子:

read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-time-zone = "+00:00" <--- Place here.
log_error = "mysql_error.log"
Run Code Online (Sandbox Code Playgroud)

https://community.apachefriends.org/f/viewtopic.php?f=16&t=47656

另外,如果要使用“America/Los_Angeles”,您需要确保数据库中填充了正确的时区名称。我建议使用偏移量。我实际上建议使用 UTC 作为您的基础,然后根据用户的时区从该时间点转换您的时间,这将为您节省以后的许多麻烦,并保持数据库的良好和统一。查看我在下面链接的指南,它为我解释得非常清楚,并且我使用了这个系统。有很多方法可以对其进行编码,但是采用这种方法可以避免很多问题。

http://www.vertabelo.com/blog/technical-articles/the-proper-way-to-handle-multiple-time-zones-in-mysql