LOAD DATA INFILE won't find file every now and then?

本文关键字:every file now and then find INFILE DATA won LOAD | 更新日期: 2023-09-27 18:14:02

我有一个向MySQL数据库提交数据的应用程序,该数据库是从csv文件中读取的。有时它工作得很好,但有时LOAD DATA INFILE无法从我指定的目录中找到文件。

这是我得到的…

//making the damn query
string ctStr2 = "LOAD DATA INFILE 'C:/wamp/www/damnfile.csv' INTO TABLE " + tableName + " FIELDS TERMINATED BY ';' LINES TERMINATED BY ''r'n'";
// Runs the sql command.
MySqlConnection conn = new MySqlConnection(connection);
MySqlCommand command = conn.CreateCommand();
command.CommandText = ctStr;
conn.Open();
command.ExecuteNonQuery();

就是这样…有时它会完成工作,有时它会大喊错误"文件'C:/wamp/www/damnfile.csv' not found (Errcode:13)"。

有人知道为什么这种情况一直发生吗?我很确定文件路径是可以的。

谢谢!

LOAD DATA INFILE won't find file every now and then?

根据另一个问题的答案,HY000的errcode 13表示权限问题。此外,从bug报告中,一些响应显示,

"出于安全原因,当读取位于服务器上的文本文件时,这些文件必须驻留在数据库目录中,或者所有文件都可读。此外,要在服务器文件上使用LOAD DATA INFILE,您必须具有FILE权限。参见5.7.3节"MySQL提供的特权"。"

,

我也为此挣扎过。原来你需要文件目录是世界可读的:Chmod 755。Chmod 744 file.dat

因此,似乎文件的权限可能是不足的,当导入,偶尔发生。你是在按照某种时间表向这个文件转储数据吗?如果正在重新创建文件,并且在更改权限之前运行导入,则可能出现以下结果。