如何解决“ .local(conn,statement,…)中的错误:无法运行语句:R版本中的MySQL版本不允许使用的命令”错误?

问题描述 投票:1回答:1

所以从两天前开始,我安装了MySQL 8.0.17版,并在我的MACOS 10.14.5版上的本地服务器上设置了一个数据库。我在RStudio中有一个数据框,我想写入到我刚刚创建的数据库下的唯一表中,但是由于错误而无法执行此操作]

我能够建立与此数据库的连接,并且能够找到该表,但是当它到达DBI::dbWriteTable函数时出现此错误:

。local(conn,statement,...)中的错误:无法运行语句:此MySQL版本不允许使用命令]

我在网站上看到了类似的其他问题,但它们都大约2至7岁,无法帮助我。

# {r database connection}
con <- dbConnect(RMySQL::MySQL(),
                 dbname = "dbname",
                 host = "xxx.x.x.x",
                 port = xxxx,
                 user = "user",
                 password = "password",
)

dbWriteTable(con, name= "table", value= df, append= TRUE, temporary= FALSE)
dbDisconnect(con)

我不确定该过程在哪里进行。任何建议或开源数据库替代品将不胜感激。

mysql r dbi rmysql
1个回答
0
投票

将@jholmes注释转换为答案,这对我有用(我很难使用dbWriteTable和MySQL 8.0.18发送any数据帧:

# {r database connection}
con <- dbConnect(RMySQL::MySQL(),
                 dbname = "dbname",
                 host = "xxx.x.x.x",
                 port = xxxx,
                 user = "user",
                 password = "password",
)

dbSendQuery(con, "SET GLOBAL local_infile = true;") # <--- Added this
dbWriteTable(con, name= "table", value= df, append= TRUE, temporary= FALSE)
dbDisconnect(con)

为了使新行正常工作,我还必须向RMySQL用户授予SUPER特权。

似乎应该有一个更好的方法,可以通过更改RMySQLDBI中的内容。

© www.soinside.com 2019 - 2024. All rights reserved.