PhpStorm 中的数据库连接导致 java.rmi.ConnectException:连接拒绝托管:127.0.0.1
Database connection in PhpStorm results in java.rmi.ConnectException: Connection refused to host: 127.0.0.1
我正在尝试将我的数据库连接到我的项目(在 PhpStorm 中),以便自动完成。
我得到错误的步骤:
- 打开数据库面板,添加一个
MySQL DataSource
- 填写每个字段
- 单击
TEST CONNECTION
按钮
我已经正确填写了数据库功能中的每个字段(主机、数据库、用户、密码)
- 主持人:
s00vl9944624.fr.net.intra
- 数据库:
animationqrc
- 用户:
animationqrc
- URL(由 PhpStorm 构建):
jdbc:mysql://s00vl9944624.fr.net.intra:3306/animationqrc
错误是:
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection timed out: connect
问题是,当我自己使用 Java class 时,它只尝试连接到服务器并打印来自 table 的行,它可以工作。
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 没有找到我的 class.
我使用的是 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.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、服务器的主机名、服务器的 IP)
- 我试过 PhpStorm
附带的捆绑 java
- 我可以用mysql命令行登录服务器
总结一下我的评论,PhpStorm 似乎使用单独的 Java 进程将数据库访问与应用程序的其余部分隔离开来。看起来这两个进程之间的通信(使用 RMI,远程方法调用)是不可能的。
这可能是防火墙问题。鉴于您正在使用 Windows,请检查 OpenJDK 平台二进制文件允许的应用程序配置下的 Windows 防火墙设置以用于您的 PhpStorm 安装(查看其详细信息,在您的情况下路径应为 C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\jre64\bin\java
) ,并启用 Private 访问权限(在某些情况下,您可能还需要尝试 Public)。这将允许 Java 进程使用 RMI 进行通信。
如果在防火墙配置中找不到 OpenJDK 平台二进制文件,请从 PhpStorm 安装的 jre64\bin
文件夹中添加 java.exe
并进行配置。
与@MarkRotteveel 和 Dmitry Tronin 讨论后 | JetBrains 的支持工程师,
我学到并发现了一些东西:
- 将 OpenJDK(PhpStorm 捆绑 JDK)添加到 Windows 防火墙的允许程序列表中。
- 有一张支持与我联系的正在进行的工单:Ticket
我正在尝试将我的数据库连接到我的项目(在 PhpStorm 中),以便自动完成。
我得到错误的步骤:
- 打开数据库面板,添加一个
MySQL DataSource
- 填写每个字段
- 单击
TEST CONNECTION
按钮
我已经正确填写了数据库功能中的每个字段(主机、数据库、用户、密码)
- 主持人:
s00vl9944624.fr.net.intra
- 数据库:
animationqrc
- 用户:
animationqrc
- URL(由 PhpStorm 构建):
jdbc:mysql://s00vl9944624.fr.net.intra:3306/animationqrc
错误是:
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection timed out: connect
问题是,当我自己使用 Java class 时,它只尝试连接到服务器并打印来自 table 的行,它可以工作。
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 没有找到我的 class.
我使用的是 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.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、服务器的主机名、服务器的 IP)
- 我试过 PhpStorm 附带的捆绑 java
- 我可以用mysql命令行登录服务器
总结一下我的评论,PhpStorm 似乎使用单独的 Java 进程将数据库访问与应用程序的其余部分隔离开来。看起来这两个进程之间的通信(使用 RMI,远程方法调用)是不可能的。
这可能是防火墙问题。鉴于您正在使用 Windows,请检查 OpenJDK 平台二进制文件允许的应用程序配置下的 Windows 防火墙设置以用于您的 PhpStorm 安装(查看其详细信息,在您的情况下路径应为 C:\Users\b96297\AppData\Local\JetBrains\PhpStorm 2018.2.3\jre64\bin\java
) ,并启用 Private 访问权限(在某些情况下,您可能还需要尝试 Public)。这将允许 Java 进程使用 RMI 进行通信。
如果在防火墙配置中找不到 OpenJDK 平台二进制文件,请从 PhpStorm 安装的 jre64\bin
文件夹中添加 java.exe
并进行配置。
与@MarkRotteveel 和 Dmitry Tronin 讨论后 | JetBrains 的支持工程师, 我学到并发现了一些东西:
- 将 OpenJDK(PhpStorm 捆绑 JDK)添加到 Windows 防火墙的允许程序列表中。
- 有一张支持与我联系的正在进行的工单:Ticket