无法在eclipse中建立数据库连接

Posted

技术标签:

【中文标题】无法在eclipse中建立数据库连接【英文标题】:Not able to establish database connection in eclipse 【发布时间】:2015-06-19 09:10:21 【问题描述】:

为了使用 JPA,我想在 Eclipse 中建立一个新的数据库连接 (DB2)。从 JPA 的角度来看,在 Data Source Explorer 视图中,当我尝试创建新的数据库连接时,我在尝试 ping 服务器时收到以下日志。

org.eclipse.datatools.connectivity.exceptions.DBNotStartException: No start database command was issued. ErrorCode = -4499, SQLState = 08001.
    at org.eclipse.datatools.enablement.ibm.db2.internal.luw.JDBCLUWJDBCConnection.getConnectException(JDBCLUWJDBCConnection.java:74)
    at org.eclipse.datatools.connectivity.ui.PingJob.getTestConnectionException(PingJob.java:81)
    at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:63)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: com.ibm.db2.jcc.am.ro: [jcc][t4][2043][11550][4.8.87] Exception java.net.ConnectException: Error opening socket to server example.example.com/51.37.93.117 on port 50,000 with message: Connection timed out: connect. ERRORCODE=-4499, SQLSTATE=08001
    at com.ibm.db2.jcc.am.gd.a(gd.java:319)
    at com.ibm.db2.jcc.am.gd.a(gd.java:337)
    at com.ibm.db2.jcc.t4.zb.a(zb.java:378)
    at com.ibm.db2.jcc.t4.zb.<init>(zb.java:76)
    at com.ibm.db2.jcc.t4.a.y(a.java:306)
    at com.ibm.db2.jcc.t4.b.a(b.java:1796)
    at com.ibm.db2.jcc.am.lb.a(lb.java:570)
    at com.ibm.db2.jcc.am.lb.<init>(lb.java:522)
    at com.ibm.db2.jcc.t4.b.<init>(b.java:306)
    at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:214)
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:456)
    at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.createConnection(JDBCConnection.java:328)
    at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:105)
    at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54)
    at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:96)
    at org.eclipse.datatools.enablement.ibm.db2.internal.luw.JDBCLUWConnectionFactory.createConnection(JDBCLUWConnectionFactory.java:26)
    at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83)
    at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359)
    at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76)
    at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59)
    ... 1 more
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.ibm.db2.jcc.t4.ab.run(ab.java:34)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.ibm.db2.jcc.t4.zb.a(zb.java:372)
    ... 18 more

我可以使用DbVisualizer成功连接到数据库。

【问题讨论】:

【参考方案1】:

打开到服务器 machine 的套接字时出错:

    端口 60,000 带有消息:连接被拒绝。 ERRORCODE=-4499,SQLSTATE=08001

    端口 50,000 带有消息:连接超时:连接。 ERRORCODE=-4499, SQLSTATE=08001

在第一个中,拒绝连接可以是 50,000(端口)或 60,000(TCP/IP)。

在您的情况下,问题可能是由于:

    有另一个实例在使用该端口(50,000 表示 db2 不可用) 或者端口有问题(防火墙阻塞、端口号错误……)

检查您正在使用的库import com.ibm.db2.jcc.*; 并设置正确的端口 setPortNumber(port)。在命令行中使用Telnet 51.37.93.117 50000 来检查端口的可用性,如果是空白屏幕则端口处于打开状态,否则端口可能处于关闭/忙碌状态。

使用此link here 参考Data Source Explorer 中您可以为db2 配置采取的步骤,了解如何停止、设置、更新和启动命令以重新连接或创建数据库。

【讨论】:

以上是关于无法在eclipse中建立数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

JDBC连接后在Eclipse中执行准备语句后无法检索数据

Eclipse建立Django项目连接MySQL数据库报错,如图,请问该怎么解决?

Eclipse IDE for Java Developers(4.10.0)建立与SQL Server 2008数据库的连接

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名

无法在 Spring MVC 中建立 JDBC 连接

eclipse中的MySql(MAMP)jdbc连接错误