amazon-web-services - 无法创建 Redshift 连接

标签 amazon-web-services jdbc amazon-redshift amazon-redshift-spectrum

我正在尝试使用从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 控制台 -> 集群常规信息中找到此作业网址<

enter image description here


更新


检查安全组中的 IP 白名单,并记住检查 IP 是否列出了正确的端口。 (IP 可能已列出,但对于 Postgres 为 5432)

enter image description here

如果这里没有您的 IP,请添加它 enter image description here

关于amazon-web-services - 无法创建 Redshift 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67564384/

相关文章:

ubuntu - 使用 Chef 开源服务器部署带有密码的私有(private) git 存储库

amazon-web-services - 是否可以在 AWS 中将网络负载均衡器放在具有私有(private)端点的 API 网关前面?

java - 有没有办法从 Microsoft SQL JDBC 驱动程序获取 "java.sql.SQLIntegrityConstraintViolationException"?

sql - 加入组 ID,以获取该表中缺少的个人 ID

javascript - 使用 NodeJS 将 RabbitMQ 引入 AWS Redshift

amazon-web-services - 如何在cloudformation模板中使用waitcondition来等待RDS?

amazon-web-services - 处理来自 AWS Lambda 的 CSRF 攻击?

java数据库连接: jdbc

java - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行 '?' 附近使用的正确语法

sql - 加入包含多条记录的第二个表,取最新的