0

我有一个将数据提交到 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'(Errcode:13)”

有谁知道为什么这种情况不断发生?我很确定文件路径没问题。

谢谢!

4

1 回答 1

1

根据另一个问题的答案,HY000 的 errcode 13 表示权限问题。此外,从错误报告中,一些回复显示,

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

还,

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

因此,有时在导入时文件的权限似乎不足。您是否按某种时间表转储到此文件?如果正在重新创建文件,并且您的导入在权限更改之前运行,则可能是结果。

于 2013-05-16T17:41:16.100 回答