Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过jdbc与mysql相关的异常_Java_Mysql_Jdbc - Fatal编程技术网

Java 通过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

当我试图通过jdbc连接mysql时,我遇到了一个异常。这种类型的问题已经被问到了,但我并没有得到解决我的问题的方法,这是我的代码

    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,无法连接