Java 通过jdbc与mysql相关的异常
当我试图通过jdbc连接mysql时,我遇到了一个异常。这种类型的问题已经被问到了,但我并没有得到解决我的问题的方法,这是我的代码Java 通过jdbc与mysql相关的异常,java,mysql,jdbc,Java,Mysql,Jdbc,当我试图通过jdbc连接mysql时,我遇到了一个异常。这种类型的问题已经被问到了,但我并没有得到解决我的问题的方法,这是我的代码 public static void main(String[] args) { String url="jdbc:mysql://localhost:3306/student? autoReconnect=true&useSSL=false"; String user="root"; String pass="sys
public static void main(String[] args) {
String url="jdbc:mysql://localhost:3306/student?
autoReconnect=true&useSSL=false";
String user="root";
String pass="system";
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Now connecting to databse...\n");
Connection con=DriverManager.getConnection(url,user,pass);
System.out.println("Connected !!!\n");
con.close();
System.out.println("connection close !!!\n");
} catch (ClassNotFoundException | SQLException e) {System.out.println(e);
e.printStackTrace();
}
}
}
这些是我得到的例外
run:
Now connecting to databse...
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.Util.getInstance(Util.java:387)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2165)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2090)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at dbms_basic.Dbms_Basic.main(Dbms_Basic.java:28)
Caused by: java.lang.NullPointerException
at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005)
at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1916)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1845)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2106)
... 13 more
BUILD SUCCESSFUL (total time: 4 seconds)
运行:
现在连接到数据库。。。
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法创建到数据库服务器的连接。尝试重新连接3次。放弃。
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法创建到数据库服务器的连接。尝试重新连接3次。放弃。
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:404)
位于com.mysql.jdbc.Util.getInstance(Util.java:387)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
位于com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2165)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2090)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:795)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:44)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:404)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:247)
位于dbms_basic.dbms_basic.main(dbms_basic.java:28)
原因:java.lang.NullPointerException
位于com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005)
位于com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1916)
在com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1845)上
位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
位于com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2106)
... 还有13个
生成成功(总时间:4秒)
有人帮我解决这个错误。我会尝试使用字符编码集,例如,您可以尝试使用以下url
String url="jdbc:mysql://localhost:3306/student?autoReconnect=true&useSSL=false&characterEncoding=utf8&useUnicode=true";
我使用的是最新版本的mysql服务器和旧版本的mysql连接器。更新到最新的连接器(8.0.11)后,这个问题就解决了。当您尝试在Mysql 8或更高版本的数据库上使用Mysql 5 JDBC驱动程序时,会发生此错误。您可以使用以下JAR文件
mysql连接器java 8.0.11
或者使用这个Maven依赖项
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
mysql
仔细阅读stacktrace,您会发现一个NullPointerException,了解如何消除它。。。我只是个初学者。@MehrajMalik“你的连接是什么”你在说什么?这段代码不属于OP。它位于MySQL JDBC驱动程序代码中,即第三方库中。为什么要使用未发布(开发/测试)版本的MySQL?尝试降级到MySQL 5.7.19(最新版本),或者将Connector/J升级到开发版本8.0.7-dmr。尝试升级到最新发布的Connector/J(5.1.44)也可能是一个选项。@MarkrotVeel谢谢,在使用MySql 5.7.19之后它可以工作了谢谢。。。相同-使用了来自internet的示例教程-这解决了我的问题。谢谢,我使用的是最新版本的mysql,但我的项目支持较旧的版本,因此降级了我的本地mysql。这允许我连接到mysql8,但某些安装仍然使用5,无法连接