最近倒腾了一台阿里云主机,打算在上面装点自己的应用。使用docker安装了安装mysql后,发现数据库的存储的时间与java-web应用的时间差8个小时,初步怀疑是docker容器时区的问题。经过一系列研究,总算把docker容器的时区给调整过来。满怀欣喜的以为问题得到了解决,再次运行应用,我发现时间竟然相差了13个小时。为了彻底解决问题,决定深入研究一下,皇天不负有心人,总算了解其中缘由,问题也终于解决。下面我还原一下问题过程。

初始安装

  初始从mysql镜像安装,没有调整任何东西时,通过下面语句可以看出,mysql默认使用系统时区,docker系统的默认时区是UTC,与北京时间刚好相差8小时。

show variables like "%time_zone%";
select now();

容器时区调整

调整docker容器时区后(详细过程见:解决Docker容器时区不一致的问题),执行SQL语句,我们可以看到mysql的时区为CST。

我们的问题点来了,mysql显示时间是正确的,标准的北京时间,但运行我的WEB应用后,时间竟相差了13个小时,一切的罪魁祸首就是CST是个比较混乱的时区

CST时区

  CST有4种含义

  • 美国中部时间 Central Standard Time (USA) UTC-06:00
  • 澳大利亚中部时间 Central Standard Time (Australia)
  • UTC+09:30 中国标准时 China Standard Time
  • UTC+08:00 古巴标准时 Cuba Standard Time UTC-04:00

另外:美国从“3月11日”至“11月7日”实行夏令时,美国中部时间改为 UTC-05:00,与 UTC+08:00 相差 13 小时

JDBC时区协调

mysql驱动向数据插入数据时,需要将应用的时间修改为数据库所在时区的时间,查询时再将数据库存储的时间转换为web服务器所在时区的时间

详细代码见:com.mysql.cj.jdbc.ConnectionImpl和com.mysql.cj.protocol.a.NativeProtocol

解决方案

  在/etc/my.cnf中增加配置(网上“set global time_zone = '+08:00';”设置无效)。

default-time-zone='+8:00'

到此,问题顺利解决。

参考:https://juejin.im/post/5902e087da2f60005df05c3d?utm_source=tuicool&utm_medium=referral

CST时区,MYSQL与JAVA-WEB服务器时间相差13个小时的问题的更多相关文章

  1. mysql时间和本地时间相差13个小时的问题

    首先需要查看mysql的当前时区,用time_zone参数 mysql> show variables like '%time_zone%'; +------------------+----- ...

  2. 【转贴】一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历

    原文:https://juejin.im/post/5902e087da2f60005df05c3d ------------------------------------------------- ...

  3. 一个简单的Java web服务器实现

    前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...

  4. 常用Java Web 服务器

    Java Web应用程序需要部署在Java web服务器中运行,常用的Java Web服务器有Tomcat.GlassFish.WebLogic.JBoss.WebSphere.Jetty.JRun等 ...

  5. java web服务器tomcat介绍【转载】

    机器矩阵2016-08-10 22:14 java程序员亲切地称他为tom猫,看到这只猫可以说明1 服务器部署成功了 ,2 网络是联通的. 到底这只猫是什么来头呢? tomcat是Apache基金会下 ...

  6. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

  7. 常用/常见Java Web 服务器/应用服务器Logo图文介绍

    常用/常见应用服务器介绍:自己总结.整理一些常见的应用服务器,资料主要来源于网上.     常用Java Web 服务器Java Web应用程序需要部署在Java web服务器中运行,常用的Java ...

  8. ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境

    1.Ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境 http://blog.db89.org/ubuntu12-04-install-nginx-php-m ...

  9. AngularJs与Java Web服务器交互

    AngularJs是Google工程师研发的产品,它的强大之处不是几句话就能描述的,只有真正使用过的人才能体会到,笔者准备在这篇文章中,以一个简单的登录校验的例子说明如何使用AngularJs和Web ...

随机推荐

  1. Kali密码攻击之——离线攻击工具

    在线密码攻击在渗透测试中很重要,但对于测试过程中得到的哈希,加密数据,又需要离线破解工具辅助解决 Creddump套件 kali下离线攻击工具中的Cache-dump,lsadump,pwdump,均 ...

  2. IE 浏览器background image 属性问题

    background-size 如果以百分比的形式设置参数,第一个参数是宽度,第二页参数是高度.“如果只设置第一个参数,则第二个参数为auto”.这样设置,在Firefox chrome 浏览器中,图 ...

  3. C++引用和const引用、常量指针、指针常量

    1.引用.常量引用 引用主要被用做函数的形式参数--通常将类对象传递给一个函数. 引用在内部存放的是一个对象的地址,它是该对象的别名.引用不占用内存,因为取地址引用的值和被引用变量的地址相同.但是ob ...

  4. 在CI (Jenkins) 从机(服务器)上使用bat批处理执行自动构建任务时,输出NuGet还原失败的解决方案

    编译环境:Jenkins+MSBuilds 1.搜索本次构建的解决方案中的所有csproj后缀文件,打开后找到这一段代码,并且删除掉.如果没有,直接忽略跳过. <Import Project=& ...

  5. Tomcat日志文件catalina.out文件过大问题

    随着项目的运行,Tomcat的日志文件catalina.out的大小日益增大,现在都有好几个GB了.如果我们不做任何处理,catalina.out的文件大小将会持续增加,直到把我们的系统硬盘空间给撑爆 ...

  6. weex安装失败,按照官网步骤多次失败后成功

    在安装Weex Toolkit之前,需要确保安装了node, npm. yangfeifei:~ yff$ node -v v6.10.2 yangfeifei:~ yff$ npm -v 3.10. ...

  7. 内置函数filter()和匿名函数lambda解析

    一.内置函数filter filter()函数是 Python 内置的一个高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回由符合条件迭代器 ...

  8. adb shell 命令之----pm

    常用的用法: 查看已经安装的包: pm list packages 查看已经安装的包以及apk路径(-3:只看第三方应用: -s:只看系统应用) -f: see their associated fi ...

  9. Machine Learning--week2 多元线性回归、梯度下降改进、特征缩放、均值归一化、多项式回归、正规方程与设计矩阵

    对于multiple features 的问题(设有n个feature),hypothesis 应该改写成 \[ \mathit{h} _{\theta}(x) = \theta_{0} + \the ...

  10. 线性回归(linear regression)

    基本形式 最小二乘法估计拟合参数 最小二乘法:基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(least square method) 即(左边代表 $\mathbf{\omega }$ 和 ...