相差8小时:时区设置导致docker中的openGauss时间问题

2024-05-01 15:20

本文主要是介绍相差8小时:时区设置导致docker中的openGauss时间问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • (一)问题
  • (二)解决
    • (2.1)确认服务器时间
    • (2.2)确认和修改docker时间
      • (2.2.1)失败的尝试
      • (2.2.2)成功的尝试
    • (2.2)确认和修改openGauss时间
    • (2.3)one more thing
    • (2.4)two more thing

(一)问题

前面用docker装好了openGauss。
跑应用时候发现时间不对,比实际时间晚了8小时。

看就知道是时区的问题。
但是如何解决呢,经查docker可以指定环境,创建容器的时候指定时区。

> docker run -it -e TZ=Asia/Shanghai ……

但是俺前面有些数据的操作,不想再弄一遍了,怎么办呢。

(二)解决

(2.1)确认服务器时间

先确认服务器时间(时区):
没问题东八区。

> date -R
Tue, 30 Apr 2024 14:17:52 +0800

(2.2)确认和修改docker时间

再确认docker时间(时区):
果然晚8小时且不是东8区。

> docker exec -it og501 date -R
Tue, 30 Apr 2024 06:21:47

(2.2.1)失败的尝试

按照网上的说法,进入docker,链接文件到我们自己的时区。
然后重启虚拟器。

> docker exec -it og501 /bin/bash
root@a3a9789a9866:/# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
root@a3a9789a9866:/# exit
exit
> docker restart a3a9789a9866

再看时区并没有变。
仔细检查下,原来docker里面根本没有/usr/share/zoneinfo,蛤这镜像,连tzdata都没有。
所以我刚才只是新建了一个空链接localtime,链接到不存在的文件Asia/Shanghai而已。

(2.2.2)成功的尝试

那么就从外面拷贝吧,
这样刚才的链接就有效了。
由于太懒,我只拷贝了上海。。。

docker cp /usr/share/zoneinfo/Asia/Shanghai a3a9789a9866:/usr/share/zoneinfo/Asia/Shanghai

噢,应该先建目录再拷贝。
忘写了。

(2.2)确认和修改openGauss时间

重启后docker里面正常了。

> docker exec -it og501 date -R
Tue, 30 Apr 2024 14:34:49 +0800

但是数据库里的时间依然不对。

> select now()
> "2024-04-30 06:36:12.740174"

看看时区呢:

> show timezone;
> "UCT"

这我无语了,谁拼写的这玩意儿,再怎么说也应该是UTC吧。
反正吧改成中国吧(我只改自己的库,坑继续留给其它人)。

> alter database postgres set timezone='PRC';

看看时间:

> select now()
> "2024-04-30 14:42:16.178802+08"

再看看时区:

> show timezone;
> "PRC"

(2.3)one more thing

修改数据库时间后,之前已入库的错误时间记录是不会变的(它们是数据啊)。
所以要么从业务层面上去更新,要么留着不管。

(2.4)two more thing

还是设为自己的时区比较好,
强行改时间,都设为UTC,咋看是没啥问题……如果你的系统不用跨国的话……

这篇关于相差8小时:时区设置导致docker中的openGauss时间问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/952012

相关文章

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at