如何解决R连接MySQL上传数据时‘加载本地数据被禁用’的错误
解决MySQL本地数据加载禁用导致的R数据上传错误
方法1:在R的数据库连接中启用客户端本地加载权限
错误核心是MySQL默认禁止本地数据导入,需要在R建立连接时开启客户端的local_infile选项,同时改用更直接的dbWriteTable上传数据:
library(RMySQL) library(DBI) # 建立连接时添加local_infile=TRUE参数 mydb <- DBI::dbConnect(MySQL(), user='user', password='password', dbname='sakila', host="127.0.0.1", local_infile=TRUE) # 上传mtcars数据集,设置row.names=FALSE避免行名被当成列,overwrite=TRUE覆盖已存在的表 DBI::dbWriteTable(mydb, name = "mtcars", value = mtcars, overwrite = TRUE, row.names = FALSE)
方法2:永久开启MySQL服务器端的本地加载权限
如果客户端开启后仍报错,需要修改服务器配置:
- 找到MySQL配置文件(Linux一般为
/etc/mysql/my.cnf,Windows在安装目录下的my.ini) - 在
[mysqld]区块添加:local_infile=1 - 重启MySQL服务:Linux执行
sudo systemctl restart mysql,Windows在服务管理器中重启MySQL服务
方法3:临时开启服务器端本地加载权限(会话级)
不想修改配置文件的话,登录MySQL客户端执行以下命令,重启MySQL后失效:
SET GLOBAL local_infile = 1;
额外注意事项
- 确保你的MySQL用户拥有
FILE权限,若没有执行以下授权命令:
GRANT FILE ON *.* TO 'user'@'127.0.0.1'; FLUSH PRIVILEGES;
- 若使用ODBC连接,需在ODBC数据源配置中勾选“Allow local infile”选项。
内容的提问来源于stack exchange,提问作者JohnBones JohnBones
相关产品推荐
相关产品推荐

