MySql的时区(serverTimezone)引发的血案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySql的时区(serverTimezone)引发的血案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2069字,纯文字阅读大概需要3分钟。
内容图文
![MySql的时区(serverTimezone)引发的血案](/upload/InfoBanner/zyjiaocheng/520/86412eaf5d0a428c85a89e20f0e97b47.jpg)
应用运行一段时间后,发现数据库中登记的时间和正常的时间不一致。
查询表字段值:
而现在电脑的时间是:
问题排查
1、服务器时间不同步
使用命令:date,查看linux服务器时间
[root@abc ~]# date
Sat Mar 7 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的时区(serverTimezone)引发的血案
标签:targe 服务器 sha ESS tar ima 升级 rewrite sda
本文系统来源:https://www.cnblogs.com/zhuitian/p/12436300.html
内容总结
以上是互联网集市为您收集整理的MySql的时区(serverTimezone)引发的血案全部内容,希望文章能够帮你解决MySql的时区(serverTimezone)引发的血案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。