4

这是一个新的,我在其他 stackoverflow 网站上没有发现任何提及。

所以我在 R 中编程并使用 RPostgreSQL 包来访问 Postgres 9.1.5 数据库。所以我像往常一样创建了与数据库的连接,现在我遇到了一个奇怪的错误。

db.conn = function(){

  ## This function creates a connection to the database. Subsequent
  ## functions that access the db will go through this function.
  drv = dbDriver("PostgreSQL")
  con = dbConnect(drv, user = "user", password = "password", dbname = "dbname", host = "localhost", port = 5432)
  return(con)
}

所以当我创建一个对象时:

testdb = db.conn()

该对象似乎已创建,但是当我键入

testdb

Error in function (classes, fdef, mtable)  : 
  unable to find an inherited method for function "show", for signature "PostgreSQLConnection"

我以前从未见过这个错误。关于它可能来自哪里的任何建议?任何帮助,将不胜感激。

4

3 回答 3

2

请不要交叉发布。我也刚刚在 RPostgreSQL 列表上回复,说这对我来说很好用:

R> library(RPostgreSQL)
Loading required package: DBI
R> drv <- dbDriver("PostgreSQL") 
R> con <- dbConnect(drv, user = "edd", password = ".....", dbname = "......",
+                   host = "localhost", port = 5432)
R> con
<PostgreSQLConnection:(21267,0)> 
R> 
于 2012-09-24T22:00:24.897 回答
1

如果这对其他人有帮助,我会收到类似的错误:

“无法找到dbIsValid签名“PostgreSQLConnection”的函数的继承方法

当我无意中忘记将dbConnect调用的结果分配给连接对象时,就会发生这种情况。

所以这不起作用:

数据库连接(...)

但这确实:

con <- dbConnect(...)

于 2016-02-26T22:53:13.923 回答
1

我遇到了和你一样的问题。我的解决方案是删除“DBI”包并重新安装它。这个对我有用。但它可能不适合你。你可以试试:

remove.packages("DBI")
install.packages("DBI")
于 2016-03-19T19:17:28.297 回答