mysql如何修改时区 您所在的位置:网站首页 修改mysql时区后历史数据不见了 mysql如何修改时区

mysql如何修改时区

2023-10-18 19:58| 来源: 网络整理| 查看: 265

mysql 里CST时区的坑

一、 问题简述

mysql里CST时区是个非常坑的概念,因为在mysql里CST既表示中国也表示美国的时区。但是在JDK代码里,CST这个字符串被理解为CenTral Standard Time(USA)(GMT-6),这就造成坑的原因。

解决办法 mysql 的time_zone 配置不要用SYSTEM,因为用了就是跟随system_time_zone的值,而system_time_zone读取自数据库所在宿主机的操作系统,常常是CST的值。解决办法是将time_zone改成例如 +08:00 以免造成误会。

二、 查看时区、修改时区

查看时区 1.1、方法1

show variables like '%time_zone%';

在这里插入图片描述 看time_zone就行了,SYSTEM表示其值跟随system_time_zone

而system_time_zone的CST值,是表示中国呢,还是美国呢,是不清楚的,你直接在执行 select now() 对比一下现在时间就知道了。

1.2、方法2

# 查出全局时区和会话时区 select @@GLOBAL.time_zone,@@SESSION.time_zone;

在这里插入图片描述

为什么mysql有system_time_zone和time_zone两个呢 system_time_zone就是mysql服务(即mysqld)启动的时候读取数据库所在宿主机的时区,system_time_zone固定下来后,即使服务器的时区发生改变也不会影响system_time_zone的值,除非重启mysqld服务;当system_time_zone的值为SYSTEM时,time_zone的值会跟随system_time_zone。

2、如何修改时区 2.1、修改会话级别,关闭会话就会失效,也仅仅影响当前会话窗口

set time_zone = '+08:00'

2.2、全局修改、重启mysql服务后丢失,对所有会话生效

set global time_zone = '+08:00'

2.3、永久修改,修改配置文件,重启mysql服务生效

#修改my.cnf文件,在[mysqld]节点增加default-time-zone=‘+08:00’ 在这里插入图片描述 2.4、重启mysqld服务,并查看分区

systemctl restart mysqld; show variables like '%time_zone%';

在这里插入图片描述 #可以看出配置文件修改的是time_zone的值



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有