連接到本地Postgres數據庫與R問題我要下面的代碼通過RPostgreSQL
drv <- RPostgreSQL::PostgreSQL()
con <- DBI::dbConnect(drv, dbname = 'dbname', user = 'user',
host = 'host.name', port = 5432, password = 'password')
當我在服務器上運行它(Ubuntu的服務器16.04與最新更新)上運行我得到以下錯誤的數據庫:
Error in .valueClassTest(ans, "data.frame", "dbGetQuery") :
invalid value from generic function ‘dbGetQuery’, class 「NULL」, expected 「data.frame」
但是當我使用sudo從命令行運行R時,它起作用,當我從不同的筆記本電腦運行它時,它連接到服務器上的數據庫時也起作用。所以它不應該是連接問題。我正在考慮對系統上某些庫/可執行文件/配置文件的訪問權限問題?任何幫助將不勝感激。
當運行dbConnect
多次,並將其與錯誤結束,當我運行drv_info <- RPostgreSQL::dbGetInfo(drv)
,我仍然獲得多個connectionIds在drv_info
:
drv_info <- RPostgreSQL::dbGetInfo(drv)
> drv_info
$drvName
[1] "PostgreSQL"
$connectionIds
$connectionIds[[1]]
<PostgreSQLConnection>
$connectionIds[[2]]
<PostgreSQLConnection>
$fetch_default_rec
[1] 500
$managerId
<PostgreSQLDriver>
$length
[1] 16
$num_con
[1] 2
$counter
[1] 2
此外,當我運行在同一臺服務器上運行的rstudio服務器的命令時,連接將起作用。 – JaKu
根據源主機,Postgres具有不同的身份驗證機制。可能是因爲您要連接的主機名解析爲服務器上的127.0.0.1或127.1.0.1,這就要求只有特定的用戶才能連接。嘗試硬編碼外部IP地址。 – r2evans
我認爲問題出在連接後的某個地方,因爲當我嘗試使用不同的密碼(在127.0.0.1或外部IP上)時,我得到了不同的錯誤: '在postgresqlNewConnection(drv,...)中出錯:' 'RS-DBI driver :(不能連接用戶名@主機上的dbname「dbname」' – JaKu