首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不改变系统时钟的情况下将MySQL *system_time_zone*设置为UTC?

问如何在不改变系统时钟的情况下将MySQL *system_time_zone*设置为UTC?
EN

Stack Overflow用户
提问于 2022-11-15 23:43:12
回答 1查看 18关注 0票数 1
代码语言:javascript
复制
show variables like '%zone%';

+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| system_time_zone | MST   |
| time_zone        | UTC   |
+------------------+-------+

select version();
+-----------+
| version() |
+-----------+
| 8.0.31    |
+-----------+

我的物理位置定期变化,这通常意味着我在一个不同的时区。例如,上周我在PST,这周我在MST。

当我再次开始开发基于JVM的应用程序时,我得到了一个类似于以下内容的错误:

java.lang.IllegalArgumentException: HOUR_OF_DAY: 0 -> 1

深入了解我在本期中遇到的问题;原因是:“数据库中存储了一个日期时间(在我的例子中是一个时间列)值,该值位于DST丢失小时内。”

如果我真的关心时区的话,那就好了。让我把所有的事情都告诉你,继续我的一天。我有/etc/my.cnf和default_time_zone='UTC',我的JDBC驱动程序通过了connectionTimeZone=UTC,我希望它能做到这一点,但它做不到。目前,我不得不将笔记本的时钟设置为UTC,作为一个解决办法,这是IMO的荒谬之处。

那么,是否有一种方法可以打击MySQL并允许我将system_time_zone设置为UTC,即使我的实际时区是PST、MST、EST等等?或者,一种只考虑time_zone设置的方法可能也能做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2022-11-16 01:51:53

来自MySQL文档

备注 对于某些Linux平台,来自RPM或Debian包的MySQL安装包括对管理MySQL服务器启动和关闭的系统d支持。在这些平台上,没有安装mysqld_safe,因为它是不必要的。有关更多信息,请参见第2.5.9节“使用systemd管理MySQL服务器”。 在使用systemd进行服务器管理的平台上不使用mysqld_safe的一个含义是,不支持在选项文件中使用mysqld_safe或safe_mysqld部分,并可能导致意外行为。

例如,timezone属性在/etc/my.cnf的mysqld_safe部分,基本上不会对每个切换到systemd的Linux发行版产生任何影响。

除了滚动您自己的mysqld_safe启动脚本之外,让MySQL进程在UTC中全面运行的唯一方法是将您的系统时钟设置为UTC。

我很想听别的,如果不是,那就太不幸了。

附注:system_time_zone是只读的,甚至不能在MySQL CLI中设置它

编辑

有一种方法使用发行版提供的systemd驱动的MySQL。在我的工作站(Fedora 36)上,编辑/etc/sysconfig/mysql并添加"TZ“属性;对于UTC,您将执行TZ=UTC。

瞧,无论系统时钟如何,system_time_zone现在都是UTC。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74453481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档