关于jdbc常见错误

版本问题

如果运行时控制台报错

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

报这个错误很大的可能是数据库版本和jdbc-jar包版本不匹配,可以检查一下

如果运行时控制台报以下错误

Thu May 06 10:27:49 CST 2021 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.
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.
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
	at com.day1.jdbc_bacics.JdbcDemo1.main(JdbcDemo1.java:14)
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.
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:83)
	at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:128)
	at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2201)
	at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2225)
	at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1391)
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:993)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:852)
	... 6 more

很大可能是url写错了

jdbc5.x url写法:jdbc:mysql://localhost:3306/数据库名称

jdbc8.x url写法 :jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC

  1. useUnicode=true&characterEncoding=utf-8 指定字符编码,常用字符编码有:
    1. gbk
    2. utf-8
  2. useSSL=false 指明是否进行SSL连接
  3. serverTimezone=“指定时区” 常用时区介绍:
    1. Asia/Shanghai 上海时间
    2. GMT%2BB 北京时间东八区
    3. UTC 全球标准时间比北京时间晚8个小时

其它错误

如果你看到以下错误信息,那么账号有可能写错了

Exception in thread "main" java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

如果你看到以下错误信息,那么密码可能写错了

Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

如果报错信息如下,那么请检查url

Exception in thread "main" com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

 

扩展小知识

jdbc 5.x版本后注册驱动可以省略

注册驱动版本问题

jdbc 5.x注册驱动 : com.mysql.jdbc.Driver

jdbc 8.x注册驱动:com.mysql.cj.jdbc.Driver

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: JDBC(Java数据库连接)是Java程序与数据库之间进行交互的重要工具。JDBC 8.0.11是JDBC的一个版本,但在使用过程中,可能会遇到一些常见错误。以下是几种常见错误: 1. ClassNotFoundException(类未找到异常):这通常是由于未找到JDBC驱动程序引起的。在使用JDBC时,需要确保正确配置了驱动程序的类路径,并且驱动程序的jar文件已经导入到项目中。 2. SQLExceptionSQL异常):这是由于SQL语句执行或连接数据库过程中出现的问题。常见的原因有:错误SQL语法、连接数据库时的用户名或密码错误、数据库服务器关闭等。在遇到SQLException时,我们需要仔细检查SQL语句的正确性,并确保数据库连接参数的正确性。 3. ConnectException(连接异常):这是由于无法连接到数据库服务器引起的。可能的原因包括:数据库服务器地址或端口号配置错误、网络连接故障、数据库服务器未启动等。在遇到连接异常时,我们需要确保数据库服务器处于正常运行状态,并检查连接参数的准确性。 4. DataConversionException(数据转换异常):这是由于数据类型转换错误引起的。在使用JDBC时,Java和数据库之间的数据类型需要正确匹配。在进行数据操作时,需要确保正确的数据类型转换,以避免此类异常。 5. BatchUpdateException(批处理异常):这是由于批处理操作中某一项失败,导致整个批处理操作失败引起的。在进行批处理操作时,需要逐一检查每一条SQL语句的执行结果,并处理其中的异常情况。 总之,JDBC 8.0.11在使用过程中可能会遇到上述常见错误,我们需要仔细检查代码、确保配置正确、处理异常情况,以保证程序与数据库的正常交互。 ### 回答2: JDBC 8.0.11是Java数据库连接(JDBC)的一个版本,用于在Java程序和数据库之间进行通信。在使用这个版本时,可能会遇到一些常见错误。下面是一些可能会出现的错误和解决方法: 1. ClassNotFoundException:这个错误通常发生在Java程序无法找到JDBC驱动程序时。解决方法是确保已经将JDBC驱动程序的jar文件添加到项目的类路径中。 2. SQLException:这是一个在与数据库交互时常见错误。这个错误可能会发生在连接数据库、执行查询或更新语句时。解决方法是检查数据库连接URL、用户名和密码是否正确,并确保数据库服务器运行正常。 3. NullPointerException:这个错误通常表示代码中的空指针引用。在使用JDBC时,可能会发生这个错误,比如在尝试使用已关闭的连接或未初始化的变量时。解决方法是仔细检查代码并确保所有的对象都被正确地初始化和关闭。 4. BatchUpdateException:在批量执行更新操作时可能会出现这个异常。这个异常表示在执行一批更新语句时,其中一个或多个语句执行失败。解决方法是检查每个更新语句的语法和逻辑,并确保它们正确地执行。 5. DataTruncation:这个异常通常发生在尝试将数据插入到字段中,而字段长度不足以容纳该数据。解决方法是检查数据库表结构的设计,并确保字段长度足够容纳所需的数据。 这些是一些JDBC 8.0.11常见错误和解决方法。当使用JDBC时,遇到错误是很常见的,但通过仔细检查和调试代码,可以很容易地解决这些问题,并确保与数据库的正常通信。 ### 回答3: JDBC 8.0.11是Java连接数据库的一个版本,虽然它相对较新,但仍然有一些常见错误可能发生。以下是几个常见错误以及可能的解决方案: 1. ClassNotFoundException:这个错误意味着无法找到指定的JDBC驱动程序。解决方法是检查你的类路径中是否包含正确的驱动程序JAR文件,并确保在连接数据库之前加载驱动程序。 2. SQLException:这个错误通常表示在执行SQL查询或更新时出现问题。可能的原因包括SQL语句的语法错误、无效的表或列名称以及数据库连接问题。为了解决这个问题,首先检查你的SQL语句的正确性,并确保数据库连接的可用性。 3. ConnectionTimeoutException:这个错误意味着连接数据库的超时时间已过。这可能是由于网络问题、数据库服务器负载过高或数据库连接池配置不正确等原因引起的。要解决这个问题,可以尝试增加连接超时时间,并确保数据库服务器的正常运行。 4. IntegrityConstraintViolationException:这个错误意味着在数据库表中违反了完整性约束,例如主键或唯一键冲突。解决这个问题的方法是检查数据插入或更新的值是否满足表中的约束条件,并确保只插入或更新有效的数据。 5. ResultSetClosedException:这个错误意味着试图访问一个已经关闭的结果集。解决这个问题的方法是确保在使用结果集之前,通过调用关闭方法来正确地关闭结果集。 总之,理解和解决这些常见错误能够帮助开发人员更好地使用JDBC 8.0.11连接数据库,并减少潜在的错误和问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值