我正在尝试连接到monetdblite数据库,这在几分钟前工作正常。 在另一个会话中关闭连接后,重新打开R,我收到此错误消息:
con <- dbConnect(MonetDBLite(), path_db)
Error in MonetDBLite::monetdb_embedded_startup(embedded, !getOption("monetdb.debug.embedded", :
Failed to initialize embedded MonetDB !FATAL: BBPinit: "free" value larger than "size" in heap of bat 9
如果我再试一次,我会得到:
Error in MonetDBLite::monetdb_embedded_startup(embedded, !getOption("monetdb.debug.embedded", :
Failed to initialize embedded MonetDB !FATAL: BBPaddfarm: bad rolemask
我在R和RStudio中试过这个。
编辑:感谢您的回复(以及MonetDbLite包,顺便说一句)。在我创建数据库之后发生了这个错误;我输入了一些数据(大约2.7e9行)并从数据库中成功断开连接(即我使用dbDisconnect(con)并获得TRUE作为结果,这就是我认为其他错误的原因)。 R版本是3.2.2,服务器是Windows服务器2012 R2。
Edit2 - &gt;最小可重复的例子:
####### Example
library(data.table)
library(MonetDB.R)
data_orig <- data.table(id=rep(1:1e3,each=sample(100,1)))
data_orig[,y:=rnorm(.N)][,t:=1:.N,by=id]
lu <- data.table(t=1:max(data_orig[["t"]]))
dbdir <- tempdir()
con <- dbConnect(MonetDB.R::MonetDB(), embedded = dbdir)
# Create data
dbWriteTable(con,"data_orig",data_orig)
for(i in data_orig[,unique(id)]){
print(i)
query <- paste0("select * from data_orig where id=",i)
data_i <- dbGetQuery(con,query)
setDT(data_i)
tmp <- data_i[lu,roll=T,on="t"]
dbWriteTable(con,"data_new",tmp,append=T)
}
dbDisconnect(con)
基本上我从数据库中读取数据,将其聚合,然后再将其重新放回。