我尝试在monetdb SQL-后端上运行一个简单的dplyr命令。连接本身似乎正常,但dplyr调用失败。我重新启动了RSession,并试图再次重新安装MonetDB.R包,但没有成功。
library(dplyr)
db <- MonetDB.R::src_monetdb("ai_db", user="analyst", host="monetdb.local", password="mypassword")
## works!
DBI::dbGetQuery(db$con, "SELECT count(*) from users")
## fails
db %>% tbl("users") %>% mutate(n= n())资料来源:查询?X 7数据库: MonetDB 11.25.5 (2016年12月-SP1) UseMethod中的错误(“sql_translate_env”):没有适用于类"MonetDBConnection“对象的”sql_translate_env“方法
我在码头容器中使用默认的存储库/设置(packages.install("dplyr"))安装了dplyr (rocker/verse:3.3.2)。
更新1: MonetDBLite代替MonetDB.R
现在我安装了MonetDBLite,并使用以下代码创建了一个连接:
con <- mc(dbname="ai_db", user="analyst", password="mypassword", host="monetdb.local",
timeout=86400000)
db <- MonetDBLite::src_monetdb("ai_db",con=con)我设置了一个相当高的超时,因为有一条错误消息指示为“从低到低”(见下文)。但是,该命令再次失败,我不认为它与超时有关,因为它会立即失败。
## fails
db %>% tbl("users") %>% mutate(n= n())资料来源:查询?X 7数据库: MonetDB 11.25.5 (2016年12月-SP1) .mapiRead中的错误(conObj@connenv$套接字):来自MonetDB服务器的空响应,可能是超时。您可以使用“dbConnect()”的“超时值”参数来增加等待响应的时间。
数据集真的很小(只有5000条条目),所以这应该不是什么大问题。MonetDB安装在同一台服务器上,工作性能很好,DBI接口也可以工作(并在一秒钟内返回结果):
DBI::dbGetQuery(con, "SELECT count(*) from videos")更新2:
现在,我尝试了这两种方法,即MonetdbLite的开发版本和存储库中的稳定CRAN版本。两者都失败了,但有不同的错误。
packages.install("MonetDBLite")
db <- MonetDBLite::src_monetdb("ai_db", user="analyst", password="mypassword", host="monetdb.local")
db %>% tbl("users") %>% mutate(n= n())资料来源:查询?X 7数据库: MonetDB 11.25.5 (2016年12月-SP1) .mapiRead中的错误(conObj@connenv$套接字):来自MonetDB服务器的空响应,可能是超时。您可以使用“dbConnect()”的“超时值”参数来增加等待响应的时间。
devtools::install_github( "hannesmuehleisen/MonetDBLite" )
db <- MonetDBLite::src_monetdb("ai_db", user="analyst", password="mypassword", host="monetdb.local")
db %>% tbl("users") %>% mutate(n= n())资料来源:查询?继承中的X7错误(con_acquire(X),"MonetDBEmbeddedConnection"):找不到函数"con_acquire“
发布于 2017-03-03 10:15:58
请使用MonetDBLite包,它也包含连接到独立服务器的代码。
https://stackoverflow.com/questions/42575647
复制相似问题