JDBC连接错误,找不到驱动程序、找不到适合的驱动程序、无法加载连接类、不建议建立SSL连接而不需要服务器的身份验证、系统时间错误

JDBC连接数据库问题汇总

一.找不到驱动:Exception in thread “main” java.lang.ClassNotFoundException: com.mysql.cj.Driver

解决方法:

  1. 首先去看一下自己注册驱动的语句有没有写错,比如这样的:
    在这里插入图片描述
    这里用的驱动版本为8.0.11,从mysql-connector-java 5版本后jdbc.driver已经失效,因此使用新版driver,路径应该为:com.mysql.cj.jdbc.Driver,因此修改程序为:
//2.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
  1. 检查导包:
    导包步骤为:在这里插入图片描述
    在这里插入图片描述

导入完成后如果还不可以,那么直接去Modules里添加路径:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般这样就可以解决啦。

二、没有找到适合jdbc的驱动程序
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:mysql:localhost:3306//student
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at cn.itcast.jdbc.jdbcdemo1.main(jdbcdemo1.java:13)

原因:还是语句错误,忘了加“//”

在这里插入图片描述

三、线程“主”java.sql中的异常。SQLNonTransientConnectionException:无法加载连接类,原因是底层异常:com.mysql.cj.异常。错误argumentexception:数据库URL格式错误,无法解析主URL部分。
Exception in thread "main" java.sql.SQLNonTransientConnectionException: 
Cannot load connection class because of underlying exception: 
com.mysql.cj.exceptions.WrongArgumentException: 
Malformed database URL, failed to parse the main URL sections.

多加了一个“/”:

在这里插入图片描述

4.不建议建立SSL连接而不需要服务器的身份验证:
Wed Oct 21 20:45:28 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. 
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. 
For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'.
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

首先翻译一下:
警告:不建议建立SSL连接而不需要服务器的身份验证。根据MySQL 5.5.45 +、5.626+和5.7.6+的要求,如果没有设置显式选项,默认情况下必须建立SSL连接。对于不使用SSL的现有应用程序,ValuyServer证书属性设置为“false”。您需要通过设置USESL= false来显式禁用SSL,或者设置USELS=真,并为服务器证书验证提供信任存储。

**于是,解决方法:正如warn中所说的,需要在建立连接时,显式声明不验证SSL, 设置url即可!

//3.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?verifyServerCertificate=false&useSSL=false", "root", "a980420165");
  

即在连接mysql的url上加上参数: ?verifyServerCertificate=false&useSSL=false**

5.在上一步中出现了不需要服务器的身份验证的问题,出现这种问题时往往配套地出现以下问题:
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.

该问题为该错误为系统时间错误

解决方法:在url后再加上serverTimezone=GMT%2B8即可

//3.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?verifyServerCertificate=false&useSSL=false&serverTimezone=GMT%2B8", "root", "a980420165");
  • 12
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值