前言

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

血案现场

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

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

查询表字段值:

而现在电脑的时间是:

问题排查

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)。

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

解决方法

修改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 |

mysql 时区时间_MySql的时区(serverTimezone)引发的血案相关推荐

  1. mysql地区时间_mysql – 带时区的日期时间格式

    首先,阅读DATETIME和TIMESTAMP类型in the mysql docs. 然后,决定使用哪种字段类型: >如果要在不进行MySQL执行时区转换的情况下提交,存储和检索相同的值,请使 ...

  2. Linux shell不同时区时间转换(时区 夏令时 时间戳)

    如果目标地区没有使用夏令时,可以日期或时间戳直接减去小时差,也可以使用下面兼容夏令时的方法. 概念:         时间戳 :从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数. ...

  3. mysql timezone上海_MySql的时区(serverTimezone)引发的血案

    前言 mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空. 血案现场 配置jdbc的URL:jdbc:mysql://[IP]:[PORT]/[DB]?c ...

  4. mysql iso 时间_mysql 中 时间和日期函数

    原文链接: mysql 中 时间和日期函数 - redfox - 博客园 http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.htm ...

  5. mysql存储过程时间_mysql时间操作函数和存储过程

    因为业务须要统计一批数据.用到关于mysql的时间操作函数和存储过程,问题已经基本解决.把过程记录下: 1. mysql的语句中不支持直接用循环.循环仅仅能在存储过程中使用. 2. 写为文件时,注意一 ...

  6. mysql 时区设定_mysql的时区设置

    IDEA配置mysql数据库时,地址,用户名,密码,数据库名填写之后,点测试连接,提示 Server returns invalid timezone. Go to 'Advanced' tab an ...

  7. mysql 默认时间_mysql中如何设置默认时间为当前时间?

    展开全部 修改日期类型为timestamp 并允许空,如下: CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestam ...

  8. mysql 录入时间_Mysql录入时间不符

    服务器是在放在韩国的, 使用strtotimei('Y-m-d H:i:s')后 打印的时间戳,如果拿回国内服务器,date('Y-m-d H:i:s',time())输出会少1个小时 第一个原因:p ...

  9. linux设置php时间,修改 linux 时区时间和 php 时区(示例代码)

    问题:客户美国服务器时间不对 第一步,先修改硬件时区. vim /etc/sysconfig/clock 将 ZONE="America/New_York" 注释,加多一行 ZON ...

最新文章

  1. vue 巧用过渡效果
  2. php 图片上传预览(转)
  3. GitLab-CI与GitLab-Runner
  4. php中改变函数路由,php – 如何修改codeigniter中的路由
  5. 统计学的经典书籍指南 (转载自:http://blog.csdn.net/ysuncn/article/details/1943679)...
  6. ThreadLocal实现线程范围内的共享变量
  7. 建筑工程响应式网站模板
  8. 用exists代替distinct
  9. Leetcode每日一题:860.lemonade-change(柠檬水找零)
  10. net 将WebService生成dll文件
  11. 红米 android8 刷机,【红米6 安卓8.1线刷包】MIUI V9.6.7.0.OCGCNFD稳定版 线刷精简包...
  12. 无效镜像问题image has dependent child images
  13. tenforflow版YOLOv3下VOC数据集的准备和训练
  14. 国外教育邮箱购买?国外邮箱哪个好?
  15. 服务器系统浏览器打不开,电脑浏览器打不开解决方法
  16. IE/Firefox每次刷新时自动检查网页更新,无需手动清空缓存的设置方法(转)
  17. 永信至诚打造企业安全人才提升方案 补齐企业安全短板
  18. 当下的个人站长都用哪些模板做网站呢?
  19. 信息安全从业人员证书——CISP(附培训课件资料)
  20. 如何有效地进行代码 Review

热门文章

  1. 陪着时光,走过羊肠阡陌
  2. primeng使用步骤
  3. 【晓松奇谈】历史是什么,人生是什么,世界是什么,未来是什么?高晓松的回答
  4. ftp服务器在线编辑,ftp服务器上怎么直接修改office文档.
  5. YoLoV5学习(4)--detect.py程序(预测图片、视频、网络流)逐段讲解~
  6. Android Rect相关方法
  7. 重装系统后需要做什么?
  8. OKR使用经验 11-12双月
  9. 荣耀X30 Max参数配置
  10. fcntl设置FD_CLOEXEC