The server time zone value '�й���׼ʱ��' is unrecognized 错误详解-程序员宅基地

技术标签: java  记录  MySQL  mysql  

今天搭建一个SpringBoot 环境出现 "The server time zone value ‘�й���׼ʱ��’ "错误

首先,先把大家的问题解决了,将JDBC连接的URL修改为如下:

jdbc:mysql://127.0.0.1:3306/DBName?serverTimezone=GMT%2b8

如果你不想到此止步,那就往下看吧!

时区简介

  • tips:如果大家已经了解时区概念,那么可以跳过本节

为什么会有时区?

世界各地的时间并不是一致的,这是因为地球每24个小时就会围绕地轴旋转一周。当地球的某个地点享受着阳光的沐浴时,遥远的另一侧则笼罩在黑暗中,处于夜晚。世界上共有24个时区,每两个相邻时区的时间相差1小时。美国和加拿大疆域辽阔,横跨6个时区。

时区

GMT(Greenwich Mean Time):格林尼治标准时,格林尼治标准时(GMT)是格林尼治天文台通过天文学观测将每日太阳穿过本初子午线的瞬间定为正午时刻,并以此来制定时间,所以格林尼治标准时是“天文学时间”,随着科技的进步,人们发现该时间不够精确,因为地球自转的速度是不均衡的,而且自转速度也会越来越慢,所以不再使用。

GMT 12:00 就是指的是英国伦敦郊区的皇家格林尼治天文台当地的中午12:00,而GMT+8 12:00,则是指的东八区的北京当地时间的12:00。

UTC(Universal Time Coordinated):协调世界时,是基于原子物理学的特性,将在海平面上实现的“原子时秒”定义为国际标准时的时间单位,而原子时秒是这样定义的:铯-133 原子基态的两个超精细能级间在零磁场下跃迁辐射9192631770周所持续的时间 。所以,协调世界时属于“原子物理时间”,它更加精确,基本不会产生误差。

如果还没看懂,那就这样理解:GMT==UTC
在这里插入图片描述
从上图可以看出,我们国家所处的大多地区城市都在东八区,包括北京、上海、广州、深圳、武汉、长沙、郑州、南昌、合肥、福州、杭州…

解决方法一

在JDBC驱动包6以上版本(包括6)加上了一些新特性,其导致结果在JDBC连接的URL上面必须加上serverTimezone参数,来设置时区
将jdbc连接的URL后面加上serverTimezone参数,如:

jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2b8

上面时区设置为GMT+8代表为东八时区,为什么上面写的是GMT%2b8呢?那是因为URL后面的+号需要编码处理。如果直接写成GMT+8,那么+号会被解码成一个空格,会出现如下错误:
No timezone mapping entry for 'GMT 8',说在找不到GMT 8的时区映射,啥意思?

原来所有可选择的时区在TimeZoneMapping.properties配置文件中全部有做映射处理,搭建可以在该文件中寻找对应的时区,当然也可以选择通用时区:GMT+8(记得加号要编码)。

按住Ctrl+Shift+N(当然,如果你用的开发工具是IDEA),搜索TimeZoneMapping.properties配置文件,如下:

在这里插入图片描述
左边的为Key,右边的为Value。大家可以选择几个时区试试
如:

jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai  # 上海时区(也是东八区)
jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Macau		# 澳门时区(也是东八区)
jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Europe/Istanbul	# 伊斯坦布尔时区(属于东三区)

关于编码,大家可以来到这个网站编码:URL编码

解决方法二

如果不想在URL上设置时区也可以把mysql驱动包将为6以下版本(本人亲测可行)。
mysql-connector-java-5.1.47.jar(任意6以下的版本)

解决方法三

如果不想改JDBC的URL也不想改驱动,那么还有一种办法,那就是修改MySQL数据库的时区了
查看mysql时区:

show variables like '%time_zone%'		
  • system_time_zone:系统时区,服务器启动时,他将尝试自动确定主机的时区(其实是空的),该值为只读
  • time_zone:服务器当前时区。全局 time_zone系统变量指示服务器当前正在运行的时区。初始time_zone 值为SYSTEM,指示服务器时区与当前操作系统系统时区相同。

方案一:

修改配置文件:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini,(记住不要去修改C:\Program Files\MySQL\MySQL Server 5.7\my-default.ini。没用的!)
在[mysqld]下面增加default-time-zone=+8:00(东八区),然后重启mysql服务
再次查看mysql时区:

show variables like '%time_zone%'	

发现time_zone变为了+8:00

方案二:

如果你不想修改配置文件也可以使用命令方式修改

SET GLOBAL time_zone = '+8:00';		-- 以后每次连接mysql都是东八区
SET time_zone = '+8:00';			-- 只有此次连接mysql是东八区,下次连接mysql又回到系统默认时区

然后必须关闭当前连接!重新连接后才可以查看到最新数据

show variables like '%time_zone%'	

测试MySQL时区

将时区mysql时区改为东6区,查看当前时间,猜想会有什么效果?

select now();					-- 查询当前时间  2020-01-07 11:02:46

SET time_zone = '+6:00';		-- 修改时区为东六区

select now():					-- 2020-01-07 09:02:46

测试URL设置的时区

jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Europe/Istanbul	# 伊斯坦布尔时区(东三区)
@RestController
@RequestMapping("/user")
public class UserController {
    

    @Autowired
    private UserDao userDao;


    @PostMapping
    public Map save(@RequestBody User user) throws Exception {
    
        user.setBirthday(new Date());
        userDao.save(user);
        Map returnMap = new HashMap<>();
        returnMap.put("message", "添加成功");

        return returnMap;
    }
}

添加成功后发现,时间往前推进了5小时,东三区和东八区相差5小时

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Bb15070047748/article/details/103851200

智能推荐

衡量两个概率分布之间的差异性的指标_衡量两个分布的差异程度-程序员宅基地

文章浏览阅读4.6k次。原文链接:衡量两个概率分布之间的差异性的指标衡量两个概率分布之间的差异性的指标衡量两个概率分布之间的差异性的指标 KL散度(Kullback–Leibler divergence) JS散度(Jensen-Shannon divergence) 交叉熵(Cross Entropy) Wasserstein距离 衡量两个概率分布之间的差异性的指标总结一下衡量两个概率分布之间的差异性的指标,这里只是简单涉及到了KL散度、JS散度、交叉熵和Wasserstein距离KL._衡量两个分布的差异程度

matlab 响应曲面,MINITAB 响应曲面法应用-程序员宅基地

文章浏览阅读2k次。响应面法优化牛蒡根总黄酮提取工艺以下是文献中利用Minitab统计软件的析因实验得到的一些相关数据:现在同样就这篇文章中的相关数据,利用minitab实际操作如下:一、部分析因设计及实验结果1.创建因子设计得:(对应表3)2.分析因子设计得:(对应表4)拟合因子: Y 与 A, B, C, DY 的估计效应和系数(已编码单位)项 效应 系数 系数标准误 T P 常量 16.1084 0.04058..._minitab做响应面分析

栈——栈的定义及基本操作(初始化、判空、进栈、出栈、遍历栈、销毁栈等)-程序员宅基地

文章浏览阅读7.6w次,点赞240次,收藏1.6k次。文章目录栈的定义栈的存储栈上的基本操作初始化判空操作进栈操作出栈操作读栈顶元素遍历栈销毁栈完整代码及实例共享栈栈的定义栈(Stack)是只允许在一端进行插入或删除操作的线性表。栈的示意图:栈顶Top:线性表允许插入和删除的那一端。栈底Bottom:固定的,不允许进行插入和删除的另一端。 假设某个栈S={a1,a2, … ,an},如上图所示,则a1为栈底元素,an为栈顶元素。由于只能在栈顶进行插入和删除操作,故进栈顺序为a1,a2, … ,an,出栈顺序为an, … ,a2,a1。故栈的操_栈

Vue数据深拷贝方法_vue中的深拷贝-程序员宅基地

文章浏览阅读6k次。Vue项目 父组件向子组件传递数据,子组件采用el-form 对数据进行绑定,因为数据绑定是双向的,对数据 进行更改后,造成了其他依赖数据的组件显示不正确的情况,所以考虑对数据进行深拷贝,方法如下function judgeType (obj) { // tostring会返回对应不同的标签的构造函数 const toString = Object.prototype.toStri..._vue中的深拷贝

CentOS更新Kernel,删除多余Kernel 以及开启BBR_kernel $(uname -r)-程序员宅基地

文章浏览阅读775次。CentOS7开启BBR★更新版本:uname -r 显示操作系统的发行编号。如果前两位数大于4.9.*******不需升级系统否则打开www.elrepo.org导入公钥rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org安装在 ELRepo 中有两个内核选项,一个是 kernel-lt(长期支持版本),一个是..._kernel $(uname -r)

conda安装pynio pyngl卡住_安装pynio引擎-程序员宅基地

文章浏览阅读1.2k次。conda安装pynio pyngl记录一下今天的安装经历,在使用conda安装pynio和pyngl时,在python3.7.7环境下,在终端输入conda create --name pyn_env --channel conda-forge pynio pyngl时,老是卡在solving environment,改变服务器才知道原来是与镜像的设置有关系,原本使用的是清华的镜像,后来删掉清华镜像,使用默认的镜像则成功。欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器_安装pynio引擎

随便推点

c++中Socket通信函数之select_c++ socket select-程序员宅基地

文章浏览阅读2.4k次。select函数决定一个或者多个套接字(socket)的状态,如果需要的话,等待执行异步I/O。int select( __in int nfds, __inout fd_set *readfds, __inout fd_set *writefds,_c++ socket select

IBM MQ 故障诊断(一)_amq9544-程序员宅基地

文章浏览阅读6.3k次。IBM MQ 故障诊断(一)_amq9544

ios使用Xcode打包ipa教程_xcode打包教程-程序员宅基地

文章浏览阅读587次。ios使用Xcode打包ipa教程前提:需要自己有一个apple id ,没有可以到苹果官网注册一个(需要自己将apple id 设置为开发者账号,不然后面xcode配置apple id的时候不成功)http://www.applicationloader.net/blog/zh/547.html 申请个人开发者账号的教程:在 https://developer.apple.com/ac..._xcode打包教程

STM32H743中的DCMI无法进入行中断和场中断问题_dcmi_d2-程序员宅基地

文章浏览阅读2.2k次。今天在玩MT9V034摄像头时,用到了DCMI接口处理摄像头的数据,出现了一个BUG,怎么都进入不了行中断或者场中断。究其原因,原来是忘记设置其中断优先级了。void Msp_DCMI_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_DCMI_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOI_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK__dcmi_d2

地转流(部分三)_双层地转流方程-程序员宅基地

文章浏览阅读633次。海水は北半球では高圧部を右に、南半球では高圧部を左に見て、等圧線に平行に流れる。流れ(地衡流)は深さが増すと弱くなる。圧力差が小さくなるからである。海面傾斜による圧力差は深さに関係なく一定なので、下層で圧力差が小さくなるということは密度差による圧力差が傾斜による圧力差を打ち消すように働いていることを示している。海面が高いところの下には軽い海水が、海面が低いところの下には重い海水があるので圧力差..._双层地转流方程

主流相机RTSP地址格式_竞业达摄像机rtsp-程序员宅基地

文章浏览阅读3.4k次。https://blog.csdn.net/qq_34654240/article/details/79924390转载来自佳能/Canon: rtsp://192.168.100.1/佳能/Canon: rtsp://192.168.100.1/stream/profile1=u佳能/Canon: rtsp://192.168.100.1/profile1=r佳能/Canon: rtsp..._竞业达摄像机rtsp

推荐文章

热门文章

相关标签