Подключение к базе данных в PhpStorm приводит к java.rmi.ConnectException: соединение с хостом отказано: 127.0.0.1 - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь подключить свою базу данных к моему проекту (в PhpStorm), чтобы у меня было автозаполнение.

Шаги, которые я делаю, чтобы получить ошибку:

  • Открытьпанель базы данных и добавьте MySQL DataSource
  • Заполнить каждое поле
  • Нажмите кнопку TEST CONNECTION

Я правильно заполнил каждое поле (хост, база данных, пользователь, пароль) в базе данных

  • Хост: s00vl9944624.fr.net.intra
  • База данных: animationqrc
  • Пользователь: animationqrc
  • URL (созданный PhpStorm): jdbc:mysql://s00vl9944624.fr.net.intra:3306/animationqrc

Ошибка:

java.rmi.ConnectException: соединение с хостом отказано: 127.0.0.1;Вложенное исключение: java.net.ConnectException: истекло время ожидания соединения: connect

Проблема заключается в том, что, когда я использую сам класс Java, который пытается подключиться только к серверу и печатать строки из таблицы, оно работает.

import java.sql.*;

class MysqlCon{
public static void main(String args[]){
  try{
Class.forName("com.mysql.cj.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://s00vl9944624.fr.net.intra:3306/pilconquete?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","*user*","*pass*");
//here sonoo is the database name, root is the username and root is the password
Statement stmt=con.createStatement();

ResultSet rs=stmt.executeQuery("select * from Admin_list");

while(rs.next())
System.out.println(rs.getInt(1)+"  "+rs.getString(2)+"  "+rs.getString(3));

con.close();

}catch(Exception e){ System.out.println(e);}

}
}
"C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\jre64\bin\java" MysqlCon  
Thu Sep 20 16:14:02 CEST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.  
3  497764  Xavier *******

Даже когда я добавляю параметр по умолчанию PhpStorm (который вы можете увидеть в журнале ниже), кроме classpath.

"C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\jre64\bin\java" -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=127.0.0.1 -Duser.timezone=UTC -Dfile.encoding=UTF-8 MysqlCon

Когда я добавляю параметр classpath, Javaне находит своего класса.

Я использую Win7 x64, PhpStorm 2018.2.3 (также не работал в 2017.3.3).Я на работе, поэтому могут применяться сетевые ограничения, брандмауэр.И у меня нет прав администратора на моем ноутбуке.

Спасибо за вашу помощь


РЕДАКТИРОВАТЬ:

Из журнала PhpStorm:

2018-09-20 15:54:25,481 [  81612]   INFO - ution.rmi.RemoteProcessSupport - "C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\jre64\bin\java" -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=127.0.0.1 -Duser.timezone=UTC -Dfile.encoding=UTF-8 -classpath "C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\lib\util.jar;C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\lib\trove4j.jar;C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\lib\groovy-all-2.4.15.jar;C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\plugins\DatabaseTools\lib\jdbc-console.jar;C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\plugins\DatabaseTools\lib\dekaf-single-2.0.0.372.jar;C:\Users\b96297\.PhpStorm\config\jdbc-drivers\MySQL Connector\J\5.1.46\mysql-connector-java-5.1.46.jar;C:\Users\b96297\Downloads\mysql-connector-java-8.0.12.jar" com.intellij.database.remote.RemoteJdbcServer com.mysql.cj.jdbc.Driver 
2018-09-20 15:54:25,701 [  81832]   WARN - ution.rmi.RemoteProcessSupport - Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 
2018-09-20 15:54:26,310 [  82441]   INFO - ution.rmi.RemoteProcessSupport - Port/ID: 30227/RemoteDriverImpl3260ec8e 
2018-09-20 15:54:46,310 [ 102441]   WARN - ution.rmi.RemoteProcessSupport - java.rmi.NotBoundException: _DEAD_HAND_ 
2018-09-20 15:54:46,310 [ 102441]   WARN - ution.rmi.RemoteProcessSupport - at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:209) 
2018-09-20 15:54:46,310 [ 102441]   WARN - ution.rmi.RemoteProcessSupport - at com.intellij.execution.rmi.RemoteServer.start(RemoteServer.java:96) 
2018-09-20 15:54:46,310 [ 102441]   WARN - ution.rmi.RemoteProcessSupport - at com.intellij.database.remote.RemoteJdbcServerBase.setupAndStart(RemoteJdbcServerBase.java:20) 
2018-09-20 15:54:46,310 [ 102441]   WARN - ution.rmi.RemoteProcessSupport - at com.intellij.database.remote.RemoteJdbcServer.main(RemoteJdbcServer.java:14) 
2018-09-20 15:54:47,334 [ 103465]   WARN - ution.rmi.RemoteProcessSupport - The cook failed to start due to java.net.ConnectException: Connection timed out: connect 
2018-09-20 15:54:47,335 [ 103466]   INFO - ution.rmi.RemoteProcessSupport - Process finished with exit code 1 
2018-09-20 15:54:47,339 [ 103470]   WARN - lij.database.util.ErrorHandler - java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
    java.net.ConnectException: Connection timed out: connect 
java.lang.RuntimeException: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
    java.net.ConnectException: Connection timed out: connect

  • Я пытался установить java.rmi.server.hostname на разные IP (мой собственный, имя сервера, IP-адрес сервера)
  • Я пытался из комплектной Java, которая поставляется с PhpStorm
  • Я могу войти на сервер с mysql командной строки

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

После обсуждения с @MarkRotteveel и Дмитрием Трониным |Инженер поддержки в JetBrains, я узнал и обнаружил несколько вещей:

  • Добавление OpenJDK (JDK в комплекте с PhpStorm) в список разрешенных программ в брандмауэре Windows работает.
  • Существуетдействующий тикет, с которым меня связалась поддержка: тикет
0 голосов
/ 20 сентября 2018

Подводя итог моим комментариям, кажется, что PhpStorm использует отдельные процессы Java для изоляции доступа к базе данных от остальной части приложения.Похоже, что связь между этими двумя процессами (с использованием RMI, удаленного вызова метода) невозможна.

Возможно, это проблема брандмауэра.Если вы используете Windows, проверьте настройки брандмауэра Windows в разделе конфигурации разрешенных приложений для бинарного файла платформы OpenJDK для вашей установки PhpStorm (см. Подробности, в вашем случае путь должен быть C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\jre64\bin\java) и включите Private доступ (в некоторых случаях вам также может понадобиться попробовать Public ).Это позволит процессам Java взаимодействовать с использованием RMI.

Если вы не можете найти двоичный файл платформы OpenJDK в конфигурации брандмауэра, добавьте java.exe из папки jre64\bin установки PhpStorm и настройте ее..

...