JDBC 连接MySql报错,The server time zone value is unrecognized

连接数据库的时候,一个看起来没有问题的代码,如下:

package db;
import java.sql.*;
//创建不拼接字符串的crud方式
public class SqlDbHelper {
	private String driverName = "com.mysql.jdbc.Driver";
	private String dbURL = "jdbc:mysql://localhost:3306/personmanagerDB";
	private Connection dbConn = null;
	private PreparedStatement stmt = null; 
	private ResultSet rs = null;
	private String user = "root";
	private String pass = "root";

	
	public SqlDbHelper() { // 构造方法调用数据库连接。一旦创建对象,数据库建立连接
		this.getConnection();
	}

	
	public void getConnection() {
		try {
			Class.forName(driverName);
			dbConn = DriverManager.getConnection(dbURL, user, pass);
			System.out.println("连接数据库成功");
		} catch (Exception e) {
			e.printStackTrace();
			System.out.print("连接失败");
		}
	}

public static void main(String[] args) {
	SqlDbHelper sq=new SqlDbHelper();
	sq.getConnection();
}
}

却报错,如下图:
在这里插入图片描述

方案一

关于MySql升级JDBC架包导致时区问题报错(The server time zone value ‘?й???’ is unrecognized or represents more than one time zone)
在dbURL后面加上?serverTimezone=UTC
修改后为private String dbURL = "jdbc:mysql://localhost:3306/personmanagerDB?serverTimezone=UTC";即可连接成功

方案二

这种情况出现的时候你会发现自己电脑上的时间和手机上的时间存在出入,(手机的时间是通过联网更新的。)我们只需要在电脑的设置当中打开自动设置时区就可以了。再一次运行将不再报错。
在这里插入图片描述

### 解决方案 当遇到 `The server time zone value is unrecognized` 错误时,这通常是因为 MySQL 服务器的时区设置与连接器预期的格式不符[^1]。为了修正此问题,在数据库 URL 中指定时区参数是一个有效的解决方案。 例如,可以在 JDBC 连接字符串中加入 `serverTimezone=UTC` 参数: ```java String url = "jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"; ``` 对于使用 MyBatis Plus 插件的情况,如果配置是从 `application.yml` 或者其他 Spring Boot 配置文件加载,则可以这样修改数据源配置: ```yaml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username: root password: your_password ``` 另外,确保使用的 MySQL Connector/J 版本是最新的,因为旧版本可能存在一些已知的问题和兼容性缺陷。 #### 处理 mybatis-config.xml 文件中的编码声明 虽然上述方法应该能解决问题,但如果项目还涉及到 XML 形式的 MyBatis 配置文件(如 `mybatis-config.xml`),则应确认该文件头部包含了正确的 DTD 声明以及 UTF-8 编码设定[^2]: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- ... --> </configuration> ``` 通过以上调整,应当能够有效解决由于时间区域差异引起的相关错误,并保证应用程序正常运行。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Modify_QmQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值