0

私はインターネットを精査し、この問題のトラブルシューティングを何時間も試みましたが、最終的には屈服し、直接助けを求めることにしました.

Linux 専用サーバーを実行しており、ホスト マシンの php ページから実行される mysql クエリを実行して、データを mysql データベースにロードする必要があります。

私が抱えている問題は、実際に自分のファイルを見つけてアップロードするためにディレクトリ構造がどのように見える必要があるのか​​ わからないことです。以下に例を挙げます。

LOAD DATA INFILE 'WHAT IN THE WORLD GOES HERE TO MAKE THIS WORK?' 
INTO TABLE customers

これを実行しようとするたびに返されるエラーは

Error Code: 1045. Access denied for user

私はすでにアクセス許可を確認しており、ユーザーは適切なデータベースに対して完全なアクセス許可を持っています。私自身の調査から、いくつかの理由でこのエラーがスローされる可能性があることがわかりました。そのうちの 1 つは、アップロードしようとしているファイルが見つからないことです。

public_html フォルダーに入った後のファイル構造は次のとおりです。

reports/uploads/fileName.csv

事前に助けてくれてありがとう!これは私を狂気に駆り立てています。私がこれを完全に間違った方法で行っていた場合、または私が行っていることを達成するためのより簡単な方法がある場合は、その面での提案も受け付けています.

4

2 に答える 2

1

ドキュメントで説明されているように:

  • ファイル名が絶対パス名の場合、サーバーはそれをそのまま使用します。
  • ファイル名が 1 つ以上の先行コンポーネントを含む相対パス名である場合、サーバーはサーバーのデータ ディレクトリを基準にしてファイルを検索します。
  • 先行コンポーネントのないファイル名が指定された場合、サーバーはデフォルト データベースのデータベース ディレクトリでファイルを検索します。

public_htmlファイルは MySQL サーバーによって読み取られているため、フォルダーは無関係です。Web サーバーとデータベース サーバーが異なるマシンであり、サーバーではなくクライアントからファイルをロードしようとしている場合は、 を使用LOAD DATA LOCAL INFILEしてそれを指定する必要があります。次に、ファイル名は、クライアント アプリケーションの作業ディレクトリに対して相対的に解釈されます。

于 2013-09-27T18:24:25.047 に答える
0

サーバー上に存在するファイルで LOAD DATA INFILE を使用するには、データのロードを実行するユーザーに FILE 権限が必要です。ファイルがクライアント側に存在する場合は、LOAD DATA LOCAL INFILE を使用します。

このリンクは便利です: http://dev.mysql.com/doc/refman/5.1/en/load-data.html

通常、/tmp などのアクセスしやすい場所にあるファイルを使用して LOAD FILE をテストし、権限に問題がないことを確認することをお勧めします。次に、実際のファイルがある場所へのアクセスの問題のデバッグを開始できます。

お役に立てれば。

于 2013-09-27T18:47:15.247 に答える