网站首页 > java教程 正文
前提引入:在项目开发过程中发现一个更新其他字段的sql 竟然在数据库中把updateTime字段修改了,而且修改的时间与当前系统北京时间相差了接近八个小时。
mybatis 中update更新语句为
<update id="updateLogSend" >
update xxxx set xxxx = #{xxxx}
where xxxxid = #{xxxxxId}
</update>
通过排查发现在数据库中 对于update_time字段,定义如下
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
同时只有使用upate 语句进行更新的时候(有值改变)才会对update_time进行更新
使得在进行更新的时候数据库时间自动更新,以前未发现这个bug原因是对于update更新语句传入的参数都是使用了java Date类生成时间,进行重新赋值,所以没有这个问题。
因为刚好相差 八个小时 ,估计是时区的问题所以进行排查。发现linux系统时间确实跟更新数据库时间一样。
使用的Date —R 指令查看指令时间 当前北京时间为19:58 linux服务器时间为11:58
找到问题之后产生疑问为什么使用java类重新生成的时间确实是北京时间,难道这边跟系统时间不一样吗?
方式1
jinfo 1728 |grep user.timezone
查看jvm 运行pid 设置时间
方式2
查看JVM虚拟机参数 通过jps 或者ps -ef |grep java 指令查看 当前运行的java项目
获取到pid之后使用jinfo (可以实时查看和调整jvm配置参数)
可以看到服务器这边jvm设置的时间为上海时间。
方式3
通过jvisualvm即可得到
解决方法
- 在程序中使用java的函数设定时区。
- 在启动java程序时加参数-Duser.timezone=GMT+8
- 修改etc/sysconfig/clock 文件 因为jre是从/etc/sysconfig/clock这个文件中 获取时区信息的
附clock文件内容:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
ZONE -- 时区
UTC -- 表明时钟设置为UTC。
ARC -- 仅用于alpha表明使用ARC。
今天分享的内容就到这里了~看到这里的小伙伴,无论你是小白还是大神,都欢迎多多评论、点赞、互动哦。
大家也可以将学习使用Java过程中不懂的困惑提出来,后续我会为大家讲解。
最近我也整理了一些Java资料,包含各大厂面经分享、模拟试题和视频干货。千万不要错过!如果感兴趣的话,欢迎关注并私信我!爱你们~
猜你喜欢
- 2024-10-26 一些长时间GC停顿问题的排查及解决办法
- 2024-10-26 真的很实在,程序员如何精确评估开发时间?
- 2024-10-26 「JAVA面试」时间轮你了解吗?(java中的时间类)
- 2024-10-26 java判断当前日期时间大于指定日期时间 记录日常开发中的小搜索
- 2024-10-26 java如何优雅的实现时间控制(java 时间控件)
- 2024-10-26 整理 | Java日期工具类(java操作日期的类)
- 2024-10-26 Java8 新特性:新日期与时间(java 日期操作)
- 2024-10-26 java 和 go 的定时器对比(java定时器和多线程的区别)
- 2024-10-26 Java时间类Date与Calendar的区别与使用
- 2024-10-26 Mysql客户端上,时间为啥和本地差了整整13个小时,就离谱
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)