【问题标题】:LOAD DATA INFILE won't find file every now and then?LOAD DATA INFILE 时不时找不到文件?
【发布时间】:2013-05-11 17:07:33
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: c# mysql load-data-infile


    【解决方案1】:

    根据another question 中的回答,HY000 的 errcode 13 表示权限问题。此外,来自a bug report 的一些回复显示,

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

    还有,

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

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

    【讨论】:

    • 你不会相信...问题不在于任何权限问题。真正发生的是,在应用程序的某个时刻,我会打开 .csv 文件并将其显示在屏幕上,以便用户将其视为“表格”。所以...文件已打开,因此我无法使用它执行查询。愚蠢的错误。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-05-02
    • 2014-05-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多