加载数据文件一直是一个痛苦的屁股设置,似乎没有标准的方式来让它工作,但我一直能够让它工作....最终,除了现在。
Error Code: 29. File '/loadinfile/file.csv' not found (OS errno 13 - Permission denied)
系统如下:
MySQL版本8.0.29-0ubuntu0.22.04.2Ubuntu 22.04
加载文件目录属于mysql:mysql和文件相同,我尝试过chmod 757甚至777
在配置文件中,我尝试了以下变化:
secure_file_priv = "/loadinfile/"
secure_file_priv = '/loadinfile/'
secure_file_priv = ""
secure_file_priv = ''
下面也可以设置:
[mysqld]
local-infile = 1
[client]
loose-local-infile=1
改变
LOAD DATA INFILE '/loadinfile/file.csv' INTO TABLE table
LOAD DATA LOCAL INFILE '/loadinfile/file.csv' INTO TABLE table
将错误信息更改为:
Error Code: 2. File 'loadinfilefile.csv' not found (OS errno 2 - No such file or directory)
Error Code: 2. File 'loadinfilefile.csv' not found (OS errno 2 - No such file or directory)
上面的消息表明你的文件所在的目录是错误的!您必须定义完整路径:
例如在Mac中如果你的文件位于桌面,它必须像这样:
LOAD DATA LOCAL INFILE '/Users/computer_name/Desktop/filename.file_extension' INTO TABLE table
在windows
LOAD DATA LOCAL INFILE 'C:Userscomputer_nameDesktopfilename.file_extension' INTO TABLE table
希望这能解决你的问题。
错误码:2。无效的文件路径。保持本地INFILE选项,并指定CSV文件的完整路径,或者确保CSV文件路径正确。试一试Full path,看看是否能解决问题。From MySQL Docs
如果指定LOCAL,则文件必须位于客户端主机上。客户机程序读取该文件,按如下方式定位它:
如果文件名是绝对路径名,客户端程序将使用它鉴于。
如果文件名是一个相对路径名,客户端程序查找相对于其调用目录
的文件
编辑确保您的mysqld.cnf
或主MySQL配置文件具有以下变量
secure_file_priv = ""
local_infile=1
并且您的全局变量local_infile
为OFF,请将其打开。您可以检查,如果你运行这个查询
SHOW GLOBAL VARIABLES LIKE 'local_infile';
如果是,打开
最后,确保重新启动SQL服务以反映更改。你可以通过执行
service mysql restart
希望这能解决你的问题