我在MySQL服务器上工作,我有CREATE TEMPORARY权限,但没有'常规'创建权限。此外,我正在使用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
错误。
有人可以帮忙吗?还有另一种方法可以让它发挥作用吗?