mysql的url的timezone_MySql的时区(serverTimezone)引发的血案

前言

mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空。

血案现场

配置jdbc的URL:jdbc:mysql://[IP]:[PORT]/[DB]?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

应用运行一段时间后,发现数据库中登记的时间和正常的时间不一致。

查询表字段值:

215169c0da0fbf93e4bfaad8b0862af8.png

而现在电脑的时间是:

483af4f3ce7fc291eed7e2ba095c14c6.png

问题排查

1、服务器时间不同步

使用命令:date,查看linux服务器时间

[root@abc ~]# date

Sat Mar7 18:43:30 CST 2020

服务器的机器时间没有问题

2、程序问题

uLog.setLogTime(new Date());

程序是使用的机器时间,不会有问题

3、数据库时间

查看数据库时间:select sysdate()

mysql>select sysdate();+---------------------+

| sysdate() |

+---------------------+

| 2020-03-07 18:48:01 |

+---------------------+

1 row in set

时间也是没有问题,最后考虑到jdbc增加了时区属性

问题根源

UTC是什么时区

不属于任意时区  。协调世界时,又称世界统一时间,世界标准时间,国际协调时间,简称UTC。

时区(Time Zone)是地球上的区域使用同一个时间定义。1884年在华盛顿召开国际经度会议时,为了克服时间上的混乱,规定将全球划分为24个时区。在中国采用首都北京所在地东八区的时间为全国统一使用时间。

例:已知东京(东九区)时间为5月1日12:00,求北京(东八区)的区时?北京时间=12:00-(9-8)=11:00(即北京时间为5月1日11:00)。

2ae5248edf7cc6e170c108e17872d4e4.png

问题找到了,就是时区字段的问题

解决方法

修改jdbc时区,改成服务器所在地的真实时区

修改前:jdbc:mysql://[IP]:[PORT]/[DB]?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

修改后:jdbc:mysql://[IP]:[PORT]/[DB]?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true

重启应用,发现时间是正确的

+---------------------+

| log_time |

+---------------------+

| 2020-03-07 19:04:06 |

| 2020-03-07 19:04:03 |

| 2020-03-07 19:04:03 |

| 2020-03-07 19:04:03 |

| 2020-03-07 19:04:03 |

| 2020-03-07 19:04:03 |

| 2020-03-07 19:04:02 |

| 2020-03-07 19:04:02 |

| 2020-03-07 19:03:51 |

| 2020-03-07 10:40:35 |

| 2020-03-07 10:40:35 |

| 2020-03-07 10:40:35 |

原文出处:https://www.cnblogs.com/zhuitian/p/12436300.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值