数据库被锁在R

问题描述:

在R中,我使用以下函数,该函数在该函数中使用3或4个数据库操作。但是,错误消息显示如下:数据库被锁在R

Error in sqliteExecStatement(conn, statement, ...) : 
    RS-DBI driver: (RS_SQLite_exec: could not execute1: database is locked) 

我需要在我的代码中做什么修改?我的代码如下:

library('RSQLite') 
test <- function(portfolio,date,frame){ 
    lite <- dbDriver("SQLite", max.con = 25) 
    db <- dbConnect(lite, dbname = "portfolioInfo1.db") 
    sql <- paste("SELECT * from ", portfolio," where portDate='", date, "' ", sep = "") 
    res <- dbSendQuery(db, sql) 
    data <- fetch(res) 
    frame1 <- data.frame(portDate=date,frame) 

lite <- dbDriver("SQLite", max.con = 25) 
db <- dbConnect(lite, dbname = "portfolioInfo1.db") 
    sql <- paste("delete from ", portfolio," where portDate='", date, "' ", sep = "") 
res <- dbSendQuery(db, sql) 

    lite <- dbDriver("SQLite", max.con = 25) 
    db <- dbConnect(lite, dbname = "portfolioInfo1.db") 
    dbWriteTable(db,portfolio,frame1,append=TRUE,row.names=FALSE) 
} 
tick <- c("AAPL","TH","YHOO") 
quant <- c("121","1313","131313131") 
frame <-data.frame(ticker=tick,quantities=quant) 
#print(frame) 
test("RUSEG","2006-02-28",frame) 

看来,您连接多次而不断开相同的数据库。如果建立连接以阻止其他人编辑已编辑的数据库,数据库可能会进入锁定状态。

要么在每次连接后断开连接,要么简单地连接一次,执行所有查询,并最终断开连接。