Box*_*uan 8 ssl r rpostgresql amazon-redshift
[原帖]
我已经看到了几个类似的SO问题,但我认为它们中的任何一个都与操作系统无关.
长话短说,这是我在尝试建立与Redshift的ssl连接时看到的.
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv,
host = "XXXXXXXX.us-east-1.redshift.amazonaws.com",
port = 5439,
user = "XXXXXXXX",
password = "XXXXXXXX",
dbname = "db1")
> Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect XXXXXXXX@XXXXXXXX.us-east-1.redshift.amazonaws.com on dbname "db1")
Run Code Online (Sandbox Code Playgroud)
我尝试了以下内容,但没有一个有效.
我在AWS中有一个EC2节点(Ubuntu),在办公室有另一个Mac Pro,所以我尝试使用相同的代码从两者连接.
Linux系统可以复制和粘贴完全相同的代码.这是Sys.info()Linux服务器上的:
sysname Linux
release 3.13.0-48-generic
version #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015
nodename ip-xx-xxx-xx-xx
machine x86_64
login unknown
user bcui
effective_user bcui
Run Code Online (Sandbox Code Playgroud)
但是,Mac Pro失败并显示完全相同的错误消息.这是Mac Sys.info()(与我的Mac笔记本电脑相同):
sysname Darwin
release 15.3.0
version Darwin Kernel Version 15.3.0:
Thu Dec 10 18:40:58 PST 2015;
root:xnu-3248.30.4~1/RELEASE_X86_64
nodename bcui-MBP.local
machine x86_64
login bcui
user bcui
effective_user bcui
Run Code Online (Sandbox Code Playgroud)
我想知道导致此错误消息的Mac和Linux配置之间可能有什么不同?
[更新2016/02/10]
我试图卸载R和所有相关文件,然后从自制程序重新安装R:
brew tap homebrew/science
brew install R
Run Code Online (Sandbox Code Playgroud)
相同的错误消息:
> Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect XXXXXXXX@XXXXXXXX.us-east-1.redshift.amazonaws.com on dbname "db1")
Run Code Online (Sandbox Code Playgroud)
仅供参考,我可以使用相同的代码连接到其他非ssl Redshift集群,因此它可能与Mac上的openssl相关.
[更新2016/02/11]
更多信息来自@ MasashiMiyazaki的评论:
我已经psql通过CLI使用连接,它工作正常.另外,我也可以使用Python模块成功连接psycopg2.但是,我必须禁用此行.bash_profile才能使它们工作:
export DYLD_LIBRARY_PATH=/usr/lib:$DYLD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
在这里黑暗中拍摄。您尝试过RPostgres吗?
像这样安装
# install.packages("devtools")
devtools::install_github("RcppCore/Rcpp")
devtools::install_github("rstats-db/DBI")
devtools::install_github("rstats-db/RPostgres")
Run Code Online (Sandbox Code Playgroud)
然后测试一下
library(DBI)
library(RPostgres)
con <- dbConnect(RPostgres::Postgres(),
host = "XXXXXXXX.us-east-1.redshift.amazonaws.com",
port = 5439,
user = "XXXXXXXX",
password = "XXXXXXXX",
dbname = "db1")
Run Code Online (Sandbox Code Playgroud)