You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CSV导入SingleStore(MemSQL)报ER_FILE_NOT_FOUND错误

ERROR 1017 ER_FILE_NOT_FOUND 排查与修复方案

核心触发原因

报错指向文件无法找到,90%以上的场景由三类问题导致:路径分隔符使用错误、文件权限/位置不匹配、分布式集群节点文件未同步。

排查步骤与对应修复

1. 修正路径分隔符错误

你当前使用的\home\vagrant\filename.csv是Windows系统的反斜杠路径格式,MemSQL/SingleStore部署的Linux虚拟机环境中,路径必须使用正斜杠/作为分隔符。反斜杠在SQL字符串中属于转义符,原写法会将\h/\v/\f识别为转义字符,完全无法匹配实际文件路径。

2. 校验文件实际位置与访问权限

登录虚拟机终端按顺序核对:

  • 执行ls -l /home/vagrant/filename.csv,确认文件真实存在于对应路径,排除文件名拼写错误、大小写不匹配、后缀名隐藏(比如实际是filename.csv.txt)、文件未复制成功等问题。
  • 确认SingleStore运行用户对文件有读权限:SingleStore默认以memsql系统用户运行,/home/vagrant目录默认是vagrant用户的私有目录,memsql用户默认无访问权限。可直接将文件移动到全局可读的/tmp目录下导入,或执行chmod o+r /home/vagrant/filename.csv给文件加全局读权限,若上级目录权限拦截还需执行chmod o+x /home/vagrant给目录加遍历权限。
  • 若为分布式部署的SingleStore集群,普通LOAD DATA INFILE语法会读取计算叶子节点本地的文件,而非你连接的聚合节点上的文件。如果仅把文件传到了聚合节点,所有叶子节点本地无对应文件,同样会报文件不存在。这种场景要么把文件同步到所有叶子节点的相同路径下,要么改用LOAD DATA LOCAL INFILE语法读取客户端本地文件。

3. 修正导入命令的语法问题

原命令存在标识符引用错误,修正后的参考命令如下:

LOAD DATA INFILE '/home/vagrant/filename.csv'
INTO TABLE tableName
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n';
-- 若CSV带表头行,在最后追加 IGNORE 1 LINES 跳过表头

注意不要用双引号包裹表名,SingleStore中字符串值用单引号包裹,标识符如需转义用反引号包裹,双引号在非ANSI模式下会被识别为字符串值,导致表匹配错误。
如果使用LOAD DATA INFILE持续报权限错误,可替换为LOAD DATA LOCAL INFILE语法,该语法会读取你执行SQL的客户端所在机器的文件,无需数据库服务端配置文件访问权限,仅需客户端连接时开启local_infile参数即可。

内容的提问来源于stack exchange,提问作者Zeeshan Ansari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:24:21