我正在尝试使用从AWS redshift集群控制台下载的redshift jdbc驱动程序创建redshift连接。低于异常
java.sql.SQLException: The connection attempt failed.
at com.amazon.redshift.util.RedshiftException.getSQLException(RedshiftException.java:48)
at com.amazon.redshift.Driver.connect(Driver.java:303)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
at com.redshift.jdbc.test.ConnectionTest.main(ConnectionTest.java:27)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method)
at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
at java.base/java.net.Socket.connect(Socket.java:591)
at com.amazon.redshift.core.RedshiftStream.<init>(RedshiftStream.java:86)
at com.amazon.redshift.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:101)
at com.amazon.redshift.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:214)
at com.amazon.redshift.core.ConnectionFactory.openConnection(ConnectionFactory.java:51)
at com.amazon.redshift.jdbc.RedshiftConnectionImpl.<init>(RedshiftConnectionImpl.java:288)
at com.amazon.redshift.Driver.makeConnection(Driver.java:466)
at com.amazon.redshift.Driver.connect(Driver.java:279)
... 3 more
代码:
String jdbcURL = "jdbc:redshift://host:5439/database";
String user = "*****";
String password = "****";
String driver = "com.amazon.redshift.jdbc42.Driver";
Connection connection = null;
Statement statement = null;
try {
Class.forName(driver);
connection = DriverManager.getConnection(jdbcURL, user, password);
if (connection != null) {
System.out.println("Connection created!");
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (connection != null)
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
谁能帮我解释为什么我无法建立连接吗?
最佳答案
我猜Caused by: java.net.SocketTimeoutException: connect timed out
是一个关键,这里有一些可能性:
- 您的 IP 未列入 Redshift 安全组白名单
- 如果上面的代码正是您正在运行的代码
String jdbcURL = "jdbc:redshift://host:5439/database";
不包含正确的主机和数据库,它很神秘your-cluster-name.blahblahblah.eu-central-1.redshift.amazonaws.com:5439/your-database-name
您可以在 redshift 控制台 -> 集群常规信息中找到此作业网址<
更新
检查安全组中的 IP 白名单,并记住检查 IP 是否列出了正确的端口。 (IP 可能已列出,但对于 Postgres 为 5432)
关于amazon-web-services - 无法创建 Redshift 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67564384/