解决MySQL8.0时区的问题步骤

软件版本

  • Windows:Windows10
  • MySQL:mysql-8.0.16-winx64.zip

问题描述

java将当前时间保存到MySQL数据库时,MySQL中的时间不正确

问题分析

原因一:java数据库连接使用UTC时区(世界标准时间),即serverTimezone=UTC

url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=true

原因二:MySQL使用的time_zone属性是+00:00,而北京时间比UTC时间早8小时,即UTC+08:00

检查MySQL

/**
 * 可查看全局的时区设置和会话的时区设置
 * global.time_zone负责java连接数据库时的时区设置
 * session.time_zone负责Navicat客户端连接数据库时的时区设置
 * /
mysql> select @@global.time_zone,@@session.time_zone;

/**
 * 还有一种方法
 * System代表采用系统时区
 * CST是一种很乱的时区,它包括了4个时区
 * /
mysql> show variables like '%time_zone%'; 

// 验证时区,这行命令可以检测session.time_zone是否正确配置
mysql> select now();

解决方法

步骤一:修改java中的时区为东八区

// serverTimezone可以设置为北京时间GMT%2B8、上海时间Asia/Shanghai或者香港时间Hongkong
url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true

步骤二:修改MySQL数据库的时区为东八区

// 方法一:使用命令(优点:不需要重启MySQL服务,缺点:一旦MySQL服务被重启,设置就会消失)
mysql> set time_zone = '+8:00';
mysql> set global time_zone = '+8:00';
// 方法二:修改my.ini配置文件(优点:永久保存设置,缺点:需重启MySQL服务)
[mysqld]
// 设置默认时区
default-time_zone='+8:00'

到此这篇关于解决MySQL8.0时区的问题步骤的文章就介绍到这了,更多相关MySQL8.0时区内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL查看和修改时区的方法

    今天发现有一个程序插入的时间不对,而该字段是配置的默认值 CURRENT_TIMESTAMP,初步判断是数据库的时区设置问题. 查看时区 登录数据库查看时区配置: mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | EDT | | time_zone |

  • MySQL修改时区的方法小结

    本文实例总结了MySQL修改时区的方法.分享给大家供大家参考,具体如下: 说明:这里总结记录修改mysql时区的三种方法. 方法一:通过mysql命令行模式下动态修改 1.1 查看mysql当前时间,当前时区 > select curtime(); #或select now()也可以 +-----------+ | curtime() | +-----------+ | 15:18:10 | +-----------+ > show variables like "%time_zon

  • mysql时区问题

    用convert_tz转换时区,你可以用      show   variables   like   'time_zone';      得到时区,如果返回的是"system"的话,你可以用      show   variables   like   'system_time_zone';      得到结果.

  • 关于Java中的mysql时区问题详解

    前言 话说工作十多年,mysql 还真没用几年.起初是外企银行,无法直接接触到 DB:后来一直从事架构方面,也多是解决问题为主. 这次搭建海外机房,围绕时区大家做了一番讨论.不说最终的结果是什么,期间有同事认为 DB 返回的是 UTC 时间. 这里简单做个验证,顺便看下时区的问题到底是如何处理. 环境 openjdk version "1.8.0_242" mysql-connector-java "8.0.20" mysql "5.7" 时区

  • 详解MySQL查询时区分字符串中字母大小写的方法

    如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会.就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事.直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *

  • mysql解决时区相关问题

    前言: 在使用 MySQL 的过程中,你可能会遇到时区相关问题,比如说时间显示错误.时区不是东八区.程序取得的时间和数据库存储的时间不一致等等问题.其实,这些问题都与数据库时区设置有关,本篇文章将从数据库参数入手,逐步介绍时区相关内容. 1.log_timestamps 参数介绍 首先说明下log_timestamps参数并不影响时区,只是设置不同会影响某些日志记录的时间.该参数主要是控制 error log.slow log.genera log 日志文件中的显示时间,但不会影响 genera

  • 解决MySQL8.0时区的问题步骤

    软件版本 Windows:Windows10 MySQL:mysql-8.0.16-winx64.zip 问题描述 java将当前时间保存到MySQL数据库时,MySQL中的时间不正确 问题分析 原因一:java数据库连接使用UTC时区(世界标准时间),即serverTimezone=UTC url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&

  • 解决mysql8.0.19  winx64版本的安装问题

    MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 这篇文章重点给大家介绍解决mysql8.0.19  winx64版本的安装问题,具体内容如下所示: 下载地址:https://dev.mysql.com/downloads/mysql/,我下载了上面的187.8M的

  • 解决MySQL8.0安装第一次登陆修改密码时出现的问题

    下面给大家介绍下mysql 8.0.16 初次登录修改密码 mysql数据库初始化后初次登录需要修改密码 初次登录会碰到下面这个错误 ql> alter user root identified by 'password'; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 需要使用下面的命令来修改密码 mysql> alter

  • 阿里云centos7中安装MySQL8.0.13的方法步骤

    1.下载MySQL安装包 (这里是有技巧的,说不定我这时写这个的时候版本还是你看到时的旧版本了,如果已经不是8.0了,可以根据这样来 下新版本) 先进入官网 再将这两者一结合,就是最新版本的了 所以 [root@h1 ~]# rpm -ivh http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 2.安装mysql [root@localhost ~]# yum install -y mysql-server 或

  • Java连接MySQL8.0 JDBC的详细步骤(IDEA版本)

    一.导入jar包 1.下载jar包:https://dev.mysql.com/downloads/ 2.导入 在项目文件夹下新建一个名为lib的文件夹 将下载好的jar包放入lib文件夹,然后右击lib文件夹,选择Add as Library...,然后点击ok 二.代码部分 1.加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); 2.用户信息和url String url = "jdbc:mysql://localhost:33

  • Linux7.6二进制安装Mysql8.0.27详细操作步骤

    目录 一.环境准备 1.1 操作系统版本 1.2 磁盘空间 1.3 关闭防火墙 1.4 关闭 selinux 1.5 HOST解析 1.6 Mysql下载 二. yum安装及配置 2.1 挂载本地光盘镜像 2.2 配置yum源 2.3 安装依赖包 三.卸载MariaDB 四.安装 MySQL 4.1 用户及目录创建 4.2 用户及组 4.3 上传软件包并解压 五.环境变量配置 六.创建参数文件 七.数据库初始化 八.启动Mysql 九.登陆Mysql 十.修改密码 十一.远程登陆设置 一.环境准

  • win2008下mysql8.0.11升级mysql8.0.17版本详细步骤

    升级背景: 为了解决mysql低版本的漏洞,从mysql5.5升级到了8.0.11版本,再次升级到了8.0.17版本(从版本是2019.7.22发布) mysql8.0.10以上的版本,安装步骤基本一样 经过学习,得知: MySQL的升级方式分为两种:原地升级和逻辑升级.这两种升级方式,本质没有什么区别的.只是在对数据文件的处理上有些区别而已.原地升级是直接将数据文件进行拷贝,而逻辑升级对数据文件的处理方式是通过逻辑导出导入,需要用到mysqldump. 逻辑升级大家都理解,这种方式在数据量比较

  • 解决MySql8.0 查看事务隔离级别报错的问题

    目录 MySql8.0 查看事务隔离级别报错 问题 命令更改为 MySQL的事务隔离级别(包含mysql8.0+设置与查看) 一.事务的基本要素(ACID) 二.事务的并发问题 三.MySQL事务隔离级别 事务的隔离级别分为 四.数据库设置 Mysql 8.0+ 查询数据库事务隔离级别 MySql8.0 查看事务隔离级别报错 问题 数据库查看事务隔离级别 select @@global.tx_isolation,@@tx_isolation; 报错: mysql> select @@global

  • M1芯片安装mysql8.0数据库的实现步骤(图文)

    一.下载 首先给大家推荐一个mysql的国内镜像,虽然不是特别快,但对比起官方网站,还是快了不少,同时资源内容也有保证,不会下载到其他乱七八糟的东西 地址:http://mirrors.sohu.com/mysql/ 选择你需要的版本下载就可以了 注:可以用command+f搜索(图为5.7)本次安装8.0 二.安装 无脑继续就可以了 这里选择第三个,点next并设置mysql密码 勾选下面表示安装完成后启动mysql服务 配置环境变量 打开终端切换至根目录 编辑.bash_profile cd

  • 解决MySQL8.0 输入无误仍然提示Access denied问题

    近些时间在开始学MySQL,安装挺顺利的,按照网上现成的教程就能安装成功. 但是,在输入 mysql -uroot -p 再输入密码时,遇到了这个情况 Access denied for user 'root'@'localhost' (using password: YES) 在网上找了很多解决办法,但是基本只有一个,在.ini文件中的mysqld条目添加 skip-grant-tables 然后重启服务器,再按照刚刚的步骤再来一遍(最后不输入密码),但是还是一条语句把我拦了下来 Access

随机推荐