SpringBoot应用部署到Docker中MySQL8时间戳相差8小时问题及处理方式

embedded/2024/11/3 12:16:35/

文章目录

  • SpringBoot应用部署到Docker中MySQL8时间戳相差8小时问题及处理方式
    • 1. 检查MySQL服务器的时间区设置
    • 2. 在Spring Boot应用程序中设置时间区
    • 3. Docker容器中通过Dockerfile设置时区
    • 4. 在运行Docker容器时通过命令行传递环境变量
    • 5. 启动SpringBoot应用时设置JVM参数来指定时区

MySQL88_1">SpringBoot应用部署到Docker中MySQL8时间戳相差8小时问题及处理方式

  1. 将Spring Boot应用程序部署到Docker容器中,并且该应用程序与MySQL 8数据库交互时,如果发现创建的时间戳相差8小时,这通常是因为时间区(Time Zone)设置的问题;
  2. 可通过以下几种方式来设置时区

1. 检查MySQL服务器的时间区设置

确保MySQL服务器正确设置了所需的时间区。你可以通过执行以下SQL命令来查看和设置MySQL服务器的时间区

-- 查看当前会话的时间区
SELECT @@session.time_zone;-- 设置会话时间区
SET time_zone = '+08:00'; -- 或者使用 'Asia/Shanghai' 等名称

2. 在Spring Boot应用程序中设置时间区

确保你的Spring Boot应用程序配置文件(如application.properties或application.yml)中正确设置了JDBC连接字符串,包含时间区参数。例如下面配置中的
serverTimezone=Asia/Shanghai指定了服务器的时间区为上海时区。

spring:# 数据源配置datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/your_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=trueusername: ????password: ????

3. Docker容器中通过Dockerfile设置时区

如果你的应用程序运行在一个Docker容器中,确保容器也正确设置了时间区。可以通过在Dockerfile中添加相应的环境变量来设置时间区:

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

4. 在运行Docker容器时通过命令行传递环境变量

docker run -e TZ=Asia/Shanghai ...

5. 启动SpringBoot应用时设置JVM参数来指定时区

java -Duser.timezone=Asia/Shanghai -jar your_app.jar

http://www.ppmy.cn/embedded/134002.html

相关文章

206面试题(1~27)

206(1~27)道Java面试题 1.JDK和JRE的区别 JDK:Java 开发工具包,Java的运行环境和开发环境。 JRE:Java 运行环境,为 Java 的运行提供了所需环境 JDK(JRE,javac–java源码的编译器,其他Java程序的调试和分析工具)。 …

隨便 20241028 ISR 和 OSR 在 Kafka 中的详细解析

在 Kafka 这个分布式流处理平台中,副本的管理和数据一致性是至关重要的。为了保证系统的高可用性和容错能力,Kafka 引入了两个关键的概念:ISR(In-Sync Replicas)和OSR(Out-of-Sync Replicas)。下…

十分钟Linux中的epoll机制

epoll机制 epoll是Linux内核提供的一种高效I/O事件通知机制,用于处理大量文件描述符的I/O操作。它适合高并发场景,如网络服务器、实时数据处理等,是select和poll的高效替代方案。 1. epoll的工作原理 epoll通过内核中的事件通知接口和文件…

Vant入门

Vant是一个轻量、可靠的移动端Vue组件库,提供了丰富的组件和解决方案,帮助开发者快速构建出优雅的移动端应用。 安装vant # Vue 3项目,安装最新版Vant: npm install vant -S。 # Vue 2项目,安装Vant 2: n…

ES6面试题:(第二天)

目录 6.使用箭头函数应注意什么? 7.什么是Promise? 8.理解 async/await以及对Generator的优势 9.Promise 和 async/await的区别 10.说说js的异步编程的解决方案 6.使用箭头函数应注意什么? 1、箭头函数本身没有this,它的this指向父级上下…

【C#】搭建环境之CSharp+OpenCV

在我们使用C#编程中,对图片处理时会用到OpenCV库,以及其他视觉厂商提供的封装库,这里因为OpenCV是开源库,所以在VS资源里可以直接安装使用,这里简单说明一下搭建的步骤及实现效果,留存。 1. 项目创建 1.1…

本地docker部署中间件和应用

Docker Desktop搭建 安装完成之后使用docker下载镜像,报以下错误: 解决办法: Docker Engine配置能访问的镜像地址: {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled…

Angular中ChangeDetectorRef.detectChanges是如何实现的,对比vue种的nextTick有何不同

ChangeDetectorRef.detectChanges的介绍: ChangeDetectorRef.detectChanges() 是 Angular 中用于手动触发变更检测的方法。它的主要作用是立即检查组件的视图和数据绑定,更新界面以反映模型数据的变化。detectChanges() 是通过 Angular 的变更检测机制来…