Ни одно из решений, которые я нашел в Интернете, не работает. я держать ударОшибка «Ошибка связи» при попытке подключения к MySQL с использованием JDBC
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Связь отказа канала
Я пытаюсь соединить БД MySQL с другого сервера. Я могу заверить вас, что информация о URL-адресе, пользователе и пароле верна, поскольку она работает, когда я пытаюсь подключить db с помощью программного обеспечения PgAdmin
. Однако он не удался, когда я пытаюсь выполнить использование кода Java (через NetBean 8.1). Итак, следующий мой код:
import oracle.jdbc.pool.OracleDataSource;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Client9{
public static void main(String[] args) {
System.out.println("MySQL Connect Example.");
Connection conn = null;
String url = "jdbc:mysql://MySQLUrl:3306/";
String dbName = "MySQL_dbName";
String driver = "com.mysql.jdbc.Driver";
String userName = "user";
String password = "password";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");
conn.close();
System.out.println("Disconnected from database");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Сообщение об ошибке, как показано ниже:
run:
MySQL Connect Example.
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:422)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:673)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1084)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465)
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:422)
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 netiqcustomprov.Client9.main(Client9.java:35)
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3052)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:597)
... 16 more
BUILD SUCCESSFUL (total time: 1 minute 0 seconds)
Solutions я пытался до сих пор: я импортировал ojdb14.jar
и mysql-connector-java-5.1.23-bin.jar
в библиотеку. Я попробовал все 3 различные методы getConnection()
getConnection(String url)
(где моя строка URL = "JDBC: MySQL: // MySQLUrl: 3306/MySQL_dbName пользователь = пользователь & пароль = пароль")getConnection(String url, Properties info)
getConnection(String url, String user, String password)
Я также пытался зарегистрировать драйвер, используя следующую команду:
Driver myDriver = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(myDriver);
Одним из решений, которые я нашел, является комментарий правила «skip-networking» в файле my.cnf. Однако я не смог найти такой файл на сервере. (Сервер работает на базе ОС Linux)
Очень ценит помощь в решении этой проблемы. Заранее спасибо
ОБНОВЛЕНИЕ: См. Мой ответ. Еще раз прошу прощения за мою глупую ошибку.
Оракул не имеет ничего общего здесь. Можем ли мы увидеть, что на этом Linux-сервере запущен 'sudo lsof -i: 3306', также вы попробовали' mysql -u user -p' в командной строке (снова на этом сервере) –
«ping MySQLUrl» с машины запуск java-кода также может помочь диагностике –
Работает ли сервер MySQL? Можете ли вы подключиться от любого клиента mysql? – Gangaraju