Dplyr 后端无法为 'sql_translate_env' 找到适用的方法
Dplyr backend is not able to find applicable method for 'sql_translate_env'
我尝试在 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())
Source: query [?? x 7] Database: MonetDB 11.25.5 (Dec2016-SP1)
Error in UseMethod("sql_translate_env") : no applicable method for
'sql_translate_env' applied to an object of class "MonetDBConnection"
我在 docker 容器 (rocker/verse:3.3.2) 中使用默认的 repository/settings (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())
Source: query [?? x 7] Database: MonetDB 11.25.5 (Dec2016-SP1)
Error in .mapiRead(conObj@connenv$socket) : Empty response from
MonetDB server, probably a timeout. You can increase the time to wait
for responses with the 'timeout' parameter to 'dbConnect()'.
数据集真的很小(只有 5000 个条目)所以这应该不是什么大问题。 MonetDB 安装在同一台服务器上并且运行良好,DBI 界面也可以运行(并且 returns 一秒钟内得到结果):
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())
Source: query [?? x 7] Database: MonetDB 11.25.5 (Dec2016-SP1)
Error in .mapiRead(conObj@connenv$socket) : Empty response from
MonetDB server, probably a timeout. You can increase the time to wait
for responses with the 'timeout' parameter to '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())
Source: query [?? x 7] Error in inherits(con_acquire(x),
"MonetDBEmbeddedConnection") : could not find function
"con_acquire"
请改用 MonetDBLite 包,它也包含连接到独立服务器的代码
我尝试在 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())
Source: query [?? x 7] Database: MonetDB 11.25.5 (Dec2016-SP1)
Error in UseMethod("sql_translate_env") : no applicable method for 'sql_translate_env' applied to an object of class "MonetDBConnection"
我在 docker 容器 (rocker/verse:3.3.2) 中使用默认的 repository/settings (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())
Source: query [?? x 7] Database: MonetDB 11.25.5 (Dec2016-SP1)
Error in .mapiRead(conObj@connenv$socket) : Empty response from MonetDB server, probably a timeout. You can increase the time to wait for responses with the 'timeout' parameter to 'dbConnect()'.
数据集真的很小(只有 5000 个条目)所以这应该不是什么大问题。 MonetDB 安装在同一台服务器上并且运行良好,DBI 界面也可以运行(并且 returns 一秒钟内得到结果):
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())
Source: query [?? x 7] Database: MonetDB 11.25.5 (Dec2016-SP1)
Error in .mapiRead(conObj@connenv$socket) : Empty response from MonetDB server, probably a timeout. You can increase the time to wait for responses with the 'timeout' parameter to '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())
Source: query [?? x 7] Error in inherits(con_acquire(x), "MonetDBEmbeddedConnection") : could not find function "con_acquire"
请改用 MonetDBLite 包,它也包含连接到独立服务器的代码