在 Mac 10.11.3 上使用 RPostgreSQL 将 R 连接到 Redshift
Connect R to Redshift with RPostgreSQL on Mac 10.11.3
[原文Post]
我看到了几个类似的 SO 问题,但我认为它们都与 OS 无关。
长话短说,这是我在尝试与 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")
我尝试了以下方法,其中 none 有效。
- Importing files from PostgreSQL to R
- https://groups.google.com/forum/#!topic/rpostgresql-dev/ELnVUJqjDbk
我在 AWS 中有一个 EC2 节点 (Ubuntu),在办公室中有另一个 Mac Pro,因此我尝试使用相同的代码从两者进行连接。
Linux 系统使用复制和粘贴完全相同的代码。这是 Linux 服务器上的 Sys.info()
:
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
然而,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
我想知道导致此错误消息的 Mac 和 Linux 配置有何不同?
[更新 2016/02/10]
我已经尝试卸载 R 和所有相关文件,然后从自制软件重新安装 R:
brew tap homebrew/science
brew install R
同样的错误信息:
> Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect XXXXXXXX@XXXXXXXX.us-east-1.redshift.amazonaws.com on dbname "db1")
仅供参考,我可以使用相同的代码连接到其他非 ssl Redshift 集群,因此它可能与 Mac.
上的 openssl 有关
[更新 2016/02/11]
更多信息来自@MasashiMiyazaki 的评论:
我已经通过 CLI 使用 psql
进行连接并且工作正常。另外,我也可以使用Python模块psycopg2
连接成功。但是,我必须 禁用 来自 .bash_profile
的这一行才能使它们工作:
export DYLD_LIBRARY_PATH=/usr/lib:$DYLD_LIBRARY_PATH
这里在黑暗中拍摄。你试过了吗RPostgres?
像这样安装
# install.packages("devtools")
devtools::install_github("RcppCore/Rcpp")
devtools::install_github("rstats-db/DBI")
devtools::install_github("rstats-db/RPostgres")
然后测试一下
library(DBI)
library(RPostgres)
con <- dbConnect(RPostgres::Postgres(),
host = "XXXXXXXX.us-east-1.redshift.amazonaws.com",
port = 5439,
user = "XXXXXXXX",
password = "XXXXXXXX",
dbname = "db1")
[原文Post]
我看到了几个类似的 SO 问题,但我认为它们都与 OS 无关。
长话短说,这是我在尝试与 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")
我尝试了以下方法,其中 none 有效。
- Importing files from PostgreSQL to R
- https://groups.google.com/forum/#!topic/rpostgresql-dev/ELnVUJqjDbk
我在 AWS 中有一个 EC2 节点 (Ubuntu),在办公室中有另一个 Mac Pro,因此我尝试使用相同的代码从两者进行连接。
Linux 系统使用复制和粘贴完全相同的代码。这是 Linux 服务器上的 Sys.info()
:
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
然而,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
我想知道导致此错误消息的 Mac 和 Linux 配置有何不同?
[更新 2016/02/10]
我已经尝试卸载 R 和所有相关文件,然后从自制软件重新安装 R:
brew tap homebrew/science
brew install R
同样的错误信息:
> Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect XXXXXXXX@XXXXXXXX.us-east-1.redshift.amazonaws.com on dbname "db1")
仅供参考,我可以使用相同的代码连接到其他非 ssl Redshift 集群,因此它可能与 Mac.
上的 openssl 有关[更新 2016/02/11]
更多信息来自@MasashiMiyazaki 的评论:
我已经通过 CLI 使用 psql
进行连接并且工作正常。另外,我也可以使用Python模块psycopg2
连接成功。但是,我必须 禁用 来自 .bash_profile
的这一行才能使它们工作:
export DYLD_LIBRARY_PATH=/usr/lib:$DYLD_LIBRARY_PATH
这里在黑暗中拍摄。你试过了吗RPostgres?
像这样安装
# install.packages("devtools")
devtools::install_github("RcppCore/Rcpp")
devtools::install_github("rstats-db/DBI")
devtools::install_github("rstats-db/RPostgres")
然后测试一下
library(DBI)
library(RPostgres)
con <- dbConnect(RPostgres::Postgres(),
host = "XXXXXXXX.us-east-1.redshift.amazonaws.com",
port = 5439,
user = "XXXXXXXX",
password = "XXXXXXXX",
dbname = "db1")