2017-08-31 2 views
0

Ich habe Problem mit auf Ubuntu 16.04 Server installiert MySQL Server verbinden, aber ich habe diese Fehler:Kann nicht an MySQL-Server verbinden - Java

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
    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:411) 
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:355) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2461) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    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:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at schoolcontroller.tools.DataBase.mysql.DataAccess.connect(DataAccess.java:45) 
    at schoolcontroller.tools.DataBase.mysql.DataAccess.main(DataAccess.java:40) 

ich mit dem Server verbinden kann MySQL-Client-Anwendungen wie Navicate mit und MySQL-Workbench ohne Fehler.

Hier ist mein Code

public DataAccess() throws ClassNotFoundException { 
    Class.forName("com.mysql.jdbc.Driver"); 
} 

public static void main(String[] args) throws SQLException, ClassNotFoundException { 
    System.out.println("Connecting"); 
    new DataAccess().connect(); 
} 

public void connect() throws SQLException { 
    String connection = "jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=UTF-8"; 
    conn = DriverManager.getConnection(String.format(connection, "IPAddress", "3306", "DBname"), "user", "pass"); 
    System.out.println("Connected"); 
    st = conn.createStatement(); 
} 

Der Hafen und die Benutzernamen der Datenbankname und die IP und ist richtig.

Antwort

0

Sie könnten versuchen, den Treiber-Klasse auf den DriverManager

String driver = "com.mysql.jdbc.Driver" 
Class driverClass = Class.forName(driver); 
Driver driverObj = (Driver)driverClass.newInstance(); 
DriverManager.registerDriver(driverObj); 

zu registrieren Wenn Sie immer noch Probleme haben, dann könnten Sie zu Abmelde alle Treiber in erster Linie versuchen, und dann den Treiber erneut hinzufügen wie folgt aus:

String driver = "com.mysql.jdbc.Driver" 

List<Driver> allDriver = new ArrayList<Driver>(); 
Enumeration drivers = DriverManager.getDrivers(); 

while (drivers.hasMoreElements()) 
    allDriver.add((Driver)drivers.nextElement()); 
for (Driver d : allDriver) 
    DriverManager.deregisterDriver(d); 

Class driverClass = Class.forName(driver); 
Driver driverObj = (Driver)driverClass.newInstance(); 
DriverManager.registerDriver(driverObj); 
Verwandte Themen