插入mysql数据库时间相差14个小时

3 篇文章 0 订阅
3 篇文章 0 订阅

背景:

spring cloud 开发web项目,数据库:mysql 持久性框架:mybatis

问题:

前一段时间遇到这么一个问题:新增数据时,datatime类型的数据插入到mysql数据库后时间相差14个小时(数据库数据比当前时间少14个小时)。

排查:

1、程序在入库前没有做任何特殊处理
2、检查系统时区:CST
3、检查数据库时区:CST(没有修改的话一般都是系统时区)
造成这种问题的原因是因为高版本jdbc导致的问题,高版本的jdbc底层驱动程序对从数据库查询出来的时间用了一个Calender做类型转换,Calender记录中包含的时区导致差了14小时。(引用自:https://www.cnblogs.com/bignode/p/9310893.html)

解决:

有两种方式解决此问题
方式一:在配置文件的jdbc的url上面手动设置了serverTimezone=CST(保持和操作系统和数据库一致的时区,不管哪里的时区只要保持一致就可以喽)
方式二:修改pom文件的spring-boot版本和spring-cloud版本,比如

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>Finchley.RC1</spring-cloud.version>
</properties>

这样就自动引入5.1.46版本的jdbc驱动,就不会出现相差14个小时的问题啦

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值