0

csv ファイルから読み取られる MySQL データベースにデータを送信するアプリケーションがあります。うまく動作することもありますが、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();

これでほとんど終わりです...作業が完了することもあれば、「File 'C:/wamp/www/damnfile.csv' not found (Errcode:13)」というエラーが表示されることもあります

なぜこれが起こり続けるのか、誰にも分かりますか?ファイルパスは大丈夫だと確信しています。

ありがとう!

4

1 に答える 1

1

別の質問の回答によると、HY000 のエラーコード 13 は権限の問題を示しています。また、バグレポートから、いくつかの回答が明らかになり、

「セキュリティ上の理由から、サーバーにあるテキスト ファイルを読み取る場合、ファイルはデータベース ディレクトリに存在するか、すべてのユーザーが読み取り可能である必要があります。また、サーバー ファイルで LOAD DATA INFILE を使用するには、FILE 権限が必要です。セクション 5.7 を参照してください。 .3、「MySQL によって提供される権限」。

また、

私もこれに苦労しました。ファイルディレクトリを誰でも読み取り可能にする必要があることがわかりました: chmod 755 。chmod 744 ファイル.dat

そのため、インポート時にファイルのパーミッションが不適切な場合があるようです。何らかのスケジュールでこのファイルにダンプしていますか? ファイルが再作成され、権限が変更される前にインポートが実行された場合、これが原因である可能性があります。

于 2013-05-16T17:41:16.100 に答える