当我将DBI从0.5.1升级到0.6时,每当我调用dbReadTable时:
mv = dbReadTable(conn, "MOVIES")
driver = JDBC("oracle.jdbc.OracleDriver", classPath = class_path)n
conn = dbConnect(driver,
myhost,
username, password)它将生成一个错误,例如:
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘dbGetQuery’ for signature ‘"character", "missing"’
Traceback:
1. dbReadTable(conn, SQL("MOVIES"))
2. dbReadTable(conn, SQL("MOVIES"))
3. .local(conn, name, ...)
4. dbGetQuery(paste0("SELECT * FROM ", sql_name))
5. (function (classes, fdef, mtable)
. {
. methods <- .findInheritedMethods(classes, fdef, mtable)
. if (length(methods) == 1L)
. return(methods[[1L]])
. else if (length(methods) == 0L) {
. cnames <- paste0("\"", vapply(classes, as.character,
. ""), "\"", collapse = ", ")
. stop(gettextf("unable to find an inherited method for function %s for signature %s",
. sQuote(fdef@generic), sQuote(cnames)), domain = NA)
. }
. else stop("Internal error in finding inherited methods; didn't return a unique method",
. domain = NA)
. })(list("character", structure("missing", package = "methods")),
. structure(function (conn, statement, ...)
. standardGeneric("dbGetQuery"), generic = structure("dbGetQuery", package = "DBI"), package = "DBI", group = list(), valueClass = character(0), signature = c("conn",
. "statement"), default = `\001NULL\001`, skeleton = (function (conn,
. statement, ...)
. stop("invalid call in method dispatch to 'dbGetQuery' (no default method)",
. domain = NA))(conn, statement, ...), class = structure("standardGeneric", package = "methods")),
. <environment>)
6. stop(gettextf("unable to find an inherited method for function %s for signature %s",
. sQuote(fdef@generic), sQuote(cnames)), domain = NA)对dbGetQuery来说一切都很好。会发生什么?
发布于 2017-03-31 11:44:02
这似乎是即将修复的DBI包中的一个问题。DBI0.6-1及更高版本应该不再有此问题了。你介意在https://github.com/rstats-db/DBI/issues上提个问题吗?
https://stackoverflow.com/questions/43123049
复制相似问题