我正在使用具有 CREATE TEMPORARY 权限但没有“常规”CREATE 权限的 MySQL 服务器。此外,我正在使用 RMySQL。
我遇到了以下奇怪的行为,这对我来说要么表明(a)RMySQL 包中存在错误,要么(b)我完全遗漏了其他东西。
当我尝试将 data.frame 写入临时表时,如下所示:
df <- data.frame(IDX=c(1:10), IDY=c(10:1))
dbWriteTable(con, "Mapping", df, row.names=FALSE, overwrite=TRUE, temporary=TRUE)
我收到一个错误could not run statement: CREATE command denied to user
,表明temporary=TRUE
未CREATE
正确添加到语句中。
为什么我尝试通过首先自己添加临时表然后手动添加数据来解决这个问题,我遇到了另一个问题:
dbSendQuery(con, "CREATE TEMPORARY TABLE Mapping (IDX INT, IDY INT, PRIMARY KEY (IDX, IDY));")
out <- dbGetQuery(con, "SHOW COLUMNS FROM Mapping;"); out
Field Type Null Key Default Extra
1 ContestID int(11) NO PRI 0
2 SubmissionID int(11) NO PRI 0
sql <- sqlAppendTable(con, "Mapping", mapping, row.names=FALSE)
rs <- dbExecute(con, sql)
我得到一个could not run statement: Got a packet bigger than 'max_allowed_packet' bytes
错误。
任何人都可以帮忙吗?还有另一种方法可以让这个工作吗?