我正在尝试设置Redshift docker。每当我尝试使用我的java代码运行容器时,我都会得到以下异常:
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我有一个包含以下详细信息的属性文件:
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来获取数据源:
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/。在这方面的任何帮助都将不胜感激。
发布于 2020-07-06 23:12:37
看起来您没有提供密码。这肯定会导致来自建立新连接的代码的NPE。
您说您有一个“属性”文件,但它看起来更像是环境变量设置。假设是这种情况,并且您正在使用docker run启动容器,您可以在命令行上提供密码:
docker run -d --rm -e REDSHIFT_JDBC_PASSWORD=my_secret_password CONTAINER:TAG或者,您可以将环境设置存储在一个文件中,并使用--env-file参数将其提供给容器。
https://stackoverflow.com/questions/62756103
复制相似问题