2017-03-03 53 views
0

我尝试在monetdb SQL后端上运行简单的dplyr命令。连接本身似乎工作,但dplyr调用失败。我重新启动了RSession,并试图再次重新安装MonetDB.R程序包,但没有成功。Dplyr后端无法找到'sql_translate_env'的适用方法

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()) 

来源:查询[??] ×7]数据库:MonetDB 11.25.5(Dec2016-SP1)

错误UseMethod( “sql_translate_env”):为 'sql_translate_env' 不适用方法应用于类 “MonetDBConnection” 的目的

我在Docker容器(摇杆/诗句:3.3.2)中使用默认存储库/设置(packages.install("dplyr"))安装了dplyr。

更新1:MonetDBLite代替OD 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()) 

来源:查询[??]数据库:MonetDB 11.25.5(Dec2016-SP1)

.mapiRead(conObj @ connenv $ socket)中的错误:来自 的空响应,可能是超时。您可以增加等待 以便将'timeout'参数设置为'dbConnect()'的响应时间。

该数据集非常小(只有5000个条目),所以这不应该是一个大问题。 MonetDB安装ONT他相同的服务器和伟大工程,也是DBI接口工作(并返回内第二的结果):

DBI::dbGetQuery(con, "SELECT count(*) from videos") 

更新2:

现在我都尝试,在dev亡MonetdbLite的版本和存储库中的稳定CRAN版本。两者都失败了,但有不同的错误。

packages.install("MonetDBLite") 
db <- MonetDBLite::src_monetdb("ai_db", user="analyst", password="mypassword", host="monetdb.local") 
db %>% tbl("users") %>% mutate(n= n()) 

来源:查询[??数据库:MonetDB 11.25.5(Dec2016-SP1)

.mapiRead(conObj @ connenv $ socket)中的错误:来自 的空响应,可能是超时。您可以增加等待 以便将'timeout'参数设置为'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()) 

来源:查询[??×7]在继承错误(con_acquire(X), “MonetDBEmbeddedConnection”):找不到功能 “con_acquire”

+0

嗨,语法是否正确? https://cran.rstudio.com/web/packages/dplyr/vignettes/databases.html –

+0

传递测试用例:https://github.com/hannesmuehleisen/MonetDBLite/blob/master/tests/testthat/test_03_dplyr.R你可能需要'devtools :: install_github(“hannesmuehleisen/MonetDBLite”)'不确定 –

+0

@AnthonyDamico我试过'src_monetdb(“ai_db”,user =“analyst”,password =“mypassword”,host =“monetdb.local”)'首先,但后来我不得不重写它来设置超时(我总是得到这个恼人的超时错误)。我将在接下来的几天内尝试安装dev-version,但是我希望我能够获得稳定的CRAN版本(我正在使用预构建的docker镜像,并且我更喜欢解决方案而不需要安装所有的monetdb依赖关系(例如,'libmonetdb5.so'))。 – NaN

回答

1

请使用MonetDBLite包,但它包含的代码连接到独立服务器,也