IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JDBC——解决MySQL8.0时区的问题 -> 正文阅读

[大数据]JDBC——解决MySQL8.0时区的问题

软件版本

  • Windows:Windows10
  • MySQL:mysql-8.0.19

问题描述

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

SRC源代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1、注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2、获取连接
        String url="jdbc:mysql://127.0.0.1:3306/db4";
        String username="root";//自己的用户名
        String password="123456";//自己的密码
        Connection conn = DriverManager.getConnection(url, username, password);
        //3、定义sql语句
        String sql="update account set money=2000 where id=1";

        //4、获取执行sql对象Statement
        Statement statement = conn.createStatement();

        //5、执行sql(返回影响的行数)
        int count = statement.executeUpdate(sql);

        //6、处理结果
        System.out.println(count);

        //7、释放资源
        statement.close();
        conn.close();
    }

}

报错信息

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Exception in thread "main" java.sql.SQLException: The server time zone value ' й ? ?? ?' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value ' й ? ?? ?' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.

首先看报什么错,这里很明显是驱动名和链接的时区问题。

问题分析
原因一: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

解决方法

驱动名字不要写错

  • mysql5.7的是Class.forName("com.mysql.jdbc.Driver");
  • mysql8.0的是Class.forName("com.mysql.cj.jdbc.Driver");

修改mysql的时区

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

// serverTimezone可以设置为北京时间GMT%2B8、上海时间Asia/Shanghai或者香港时间Hongkong
url: jdbc:mysql://127.0.0.1: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服务)

找到电脑中的my.ini配置文件,在[mysqld]下加上?default-time_zone=‘+8:00’,如下:

[mysqld]
// 设置默认时区
default-time_zone=‘+8:00’

然后重启mysql80,这里也是两种方法,第一就是右击此电脑,管理,找到MySQL80进行重启,第二种是打开命令窗口(以管理员的方式运行)

C:\WINDOWS\system32>net stop mysql80
MySQL80 服务正在停止..
MySQL80 服务已成功停止。


C:\WINDOWS\system32>net start mysql80
MySQL80 服务正在启动 .
MySQL80 服务已经启动成功。

就解决了问题!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:22:42  更:2022-09-13 11:24:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:10:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码