首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在运行AWS Redshift docker时遇到空指针异常

我在运行AWS Redshift docker时遇到空指针异常
EN

Stack Overflow用户
提问于 2020-07-06 20:28:03
回答 1查看 1.2K关注 0票数 0

我正在尝试设置Redshift docker。每当我尝试使用我的java代码运行容器时,我都会得到以下异常:

代码语言:javascript
复制
Caused by: java.sql.SQLException: [Amazon][JDBC](11380) Null pointer exception.
    at com.amazon.redshift.client.PGClient.startSession(Unknown Source)
    at com.amazon.redshift.client.PGClient.<init>(Unknown Source)
    at com.amazon.redshift.core.PGJDBCConnection.connect(Unknown Source)
    at com.amazon.jdbc.common.BaseConnectionFactory.doConnect(Unknown Source)
    at com.amazon.jdbc.common.AbstractDriver.connect(Unknown Source)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
    ... 68 common frames omitted

我有一个包含以下详细信息的属性文件:

代码语言:javascript
复制
REDSHIFT_JDBC_DRIVER_CLASS_NAME = com.amazon.redshift.jdbc42.Driver
REDSHIFT_JDBC_URL = jdbc:redshift://localhost:5439/testDb
REDSHIFT_JDBC_USERNAME=test
REDSHIFT_JDBC_PASSWORD=
REDSHIFT_JDBC_FETCH_SIZE=21

然后我使用Hikari来获取数据源:

代码语言:javascript
复制
public DataSource redshiftDataSource() {
   HikariConfig config = new HikariConfig();
    config.setDriverClassName(this.env.getRequiredProperty("REDSHIFT_JDBC_DRIVER_CLASS_NAME"));
    config.setJdbcUrl(this.env.getRequiredProperty("REDSHIFT_JDBC_URL"));
    config.setLeakDetectionThreshold((Long)this.env.getRequiredProperty("REDSHIFT_JDBC_LEAK_DETECTION_THRESHOLD", Long.TYPE));
    config.setMaximumPoolSize((Integer)this.env.getRequiredProperty("REDSHIFT_JDBC_MAX_POOL_SIZE", Integer.TYPE));
    config.setMinimumIdle((Integer)this.env.getRequiredProperty("REDSHIFT_JDBC_MINIMUM_IDLE", Integer.TYPE));
    config.setPoolName(this.env.getRequiredProperty("REDSHIFT_JDBC_POOL_NAME"));
    config.setUsername(this.env.getRequiredProperty("REDSHIFT_JDBC_USERNAME"));
    config.setPassword(this.env.getRequiredProperty("REDSHIFT_JDBC_PASSWORD"));
    return new HikariDataSource(config);
}

然后我使用这个数据源来完成剩下的工作。

我使用这个docker镜像来测试连接:https://hub.docker.com/r/guildeducation/docker-amazon-redshift/。在这方面的任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-07-06 23:12:37

看起来您没有提供密码。这肯定会导致来自建立新连接的代码的NPE。

您说您有一个“属性”文件,但它看起来更像是环境变量设置。假设是这种情况,并且您正在使用docker run启动容器,您可以在命令行上提供密码:

代码语言:javascript
复制
docker run -d --rm -e REDSHIFT_JDBC_PASSWORD=my_secret_password CONTAINER:TAG

或者,您可以将环境设置存储在一个文件中,并使用--env-file参数将其提供给容器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62756103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档