MacBook导入数据集到MySQL触发两类报错如何解决
核心报错原因
三个问题叠加导致导入失败:
- 路径格式错误:你写的
\\Documents\\...是Windows系统的反斜杠路径规则,MacOS为类Unix系统,路径分隔符使用正斜杠/,且用户目录下的文件必须写全/Users/你的Mac用户名开头的绝对路径,直接以/Documents开头的路径系统无法定位文件,这是添加LOCAL参数后触发「no such file or directory」报错的核心原因。 - 安全规则限制:1290错误是MySQL默认开启的
secure-file-priv安全策略生效,默认禁止MySQL服务从文件系统任意路径读取文件。 - 语法瑕疵:你语句中
ENCLOSED BY后写的"是HTML转义格式的双引号,SQL语法中直接写"即可,否则会导致字段包裹符识别错误,即使导入成功也会出现数据解析错乱。
最优修复方案(优先选第一种,无需修改系统配置,适配本地开发场景)
方案1:使用LOAD DATA LOCAL INFILE语法导入
步骤如下:
- 获取文件正确绝对路径:打开访达找到
CAproj_2010-2060.csv文件,右键点击文件时按住键盘option键,菜单中会出现「将CAproj_2010-2060.csv拷贝为路径名称」选项,点击后直接粘贴即可得到格式正确的完整文件路径,无需手动拼接避免写错。 - 开启连接端的本地文件加载权限:
- 如果用命令行连接MySQL,连接命令必须添加参数,格式为:
mysql -u 你的数据库用户名 -p --local-infile=1 - 如果用Navicat、DBeaver、MySQL Workbench等GUI工具,找到对应连接的高级设置项,勾选「允许LOAD DATA LOCAL」相关选项后再建立连接。
- 如果用命令行连接MySQL,连接命令必须添加参数,格式为:
- 执行修正后的导入语句,将路径替换为你刚才复制的实际路径:
LOAD DATA LOCAL INFILE '粘贴你刚才复制的正确绝对路径' INTO TABLE pop_proj FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
如果执行时仍提示文件权限相关错误,可将csv文件临时移动到
/tmp目录下,再重新拷贝路径执行语句,该目录默认对所有程序开放读权限,可避开MacOS的隐私权限拦截。
方案2:调整secure-file-priv配置(适合需要频繁做服务端文件导入的场景)
如果不想使用LOCAL参数,可修改MySQL安全规则:
- 登录MySQL后执行语句查询当前允许的导入目录:
SHOW VARIABLES LIKE 'secure_file_priv'; - 如果返回结果为具体目录路径,直接将csv文件移动到该目录下,执行不带
LOCAL参数的导入语句即可,路径填写文件在该目录下的相对/绝对路径均可。 - 如果返回值为
NULL说明默认禁止所有文件导入,可找到Mac本地的MySQL配置文件my.cnf(通常路径为/etc/my.cnf或/usr/local/mysql/my.cnf),在[mysqld]配置段添加一行secure_file_priv='你自定义的允许导入目录路径',保存后重启MySQL服务生效。
内容的提问来源于stack exchange,提问作者Anna Quoc Nguyen
相关产品推荐
相关产品推荐

