2017-07-03 30 views
1

jdbcを使用してmysql dbに接続しようとしていますが、例外が発生しました。どうも! ドライバのバージョンは6.0.6、mysql dbのバージョンは5.7.18です。JDBC mysqlに接続できません

エラーはArrayIndexOutOfBoundsExceptionによって発生しているようですが、実際にはわかりません!

コード:

package test; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

public class Test { 

    @org.junit.jupiter.api.Test 
    public void test(){ 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "admin"); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

スタック

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. 
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:526) 
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513) 
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:505) 
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:479) 
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1779) 
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1596) 
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:633) 
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347) 
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at test.Test.test(Test.java:13) 

Caused by: java.lang.ArrayIndexOutOfBoundsException: 39 
    at com.mysql.cj.mysqla.io.Buffer.readInteger(Buffer.java:271) 
    at com.mysql.cj.mysqla.io.MysqlaCapabilities.setInitialHandshakePacket(MysqlaCapabilities.java:62) 
    at com.mysql.cj.mysqla.io.MysqlaProtocol.readServerCapabilities(MysqlaProtocol.java:482) 
    at com.mysql.cj.mysqla.io.MysqlaProtocol.beforeHandshake(MysqlaProtocol.java:367) 
    at com.mysql.cj.mysqla.io.MysqlaProtocol.connect(MysqlaProtocol.java:1412) 
    at com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:132) 
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1726) 
    ... 36 more 
+0

チェックリスト:接続文字列:サーバーのIP、ユーザー名、パスワード、ポート、JDBCドライバー。 –

+0

[jdbc:データベースサーバへの接続を作成できませんでした](https://stackoverflow.com/questions/41637604/jdbc-could-not-create-connection-to-database-server) – aurelius

+1

MySQL Connector/J 6.xはまだ開発中であり、したがって不安定です。代わりに5.1.42を使用する必要があります。 –

答えて

-1
Class.forName("com.mysql.jdbc.Driver"); 
      Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "admin"); 

ので、Uには、あなたもテーブル名をMySQLで設けられていない、としているポートをチェックする必要があります。

0

マークとして、まず5.1.42ドライバにダウングレードする必要があります。それは少なくとも私が本当の誤りが何であるかを見るのを助けました。私の場合は、別のホストからrootアカウントに接続していました。あなたの場合、それは別のものかもしれません。 6.0.6はまだ実際に開発中です。

関連する問題