JDBC_MySQL驱动类加载的爬坑


实验背景

mysql-5.7.25-winx64
mysql-connector-java-8.0.15
eclipse IDE 2019-3


问题描述

自信满满测试数据库的连接,代码看起来没有一点问题

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//测试数据库的连接
public class Demo {
	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/demo";
			String user = "root";
			String passwd = "root";
			Connection conn = DriverManager.getConnection(url, user, passwd);
			
			System.out.println(conn);
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

结果现实很骨感

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.
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.

问题解决

第一条错误:加载类“com.mysql.jdbc.Driver”。这是弃用。新的驱动程序类是“com.mysql.cj.jdbc.Driver”。驱动程序是通过SPI自动注册的,通常不需要手动加载驱动程序类。

解决办法:

//源代码
Class.forName("com.mysql.jdbc.Driver");

改成:

Class.forName("com.mysql.cj.jdbc.Driver");

原因:上一个被启用,需要用新的一个


第二条错误:java.sql.SQLException:服务器时区值’?? u±e×??±??未被识别或代表多个时区。如果希望利用时区支持,必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性),以使用更特殊的时区值。
解决办法:

//源代码
String url = "jdbc:mysql://localhost:3306/demo";

改成:

String url = "jdbc:mysql://localhost:3306/demo?serverTimezone=GMT";

原因:数据库和系统时区有差异,连接时,要在URL后面加上serverTimezone = GMT


原创文章,转载标注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值