3

Ubuntu12.04でLAMPを使用しています。MySQL(myserver @ localhost)で新しいユーザーを作成し、データベース上のALLをそのユーザーに付与しました。すべての人が読むことができるように設定されたテキストファイルがあります。しかし、そのテキストファイルからデータベースにデータを読み込もうとすると、「ユーザー'myserver' @'localhost'のアクセスが拒否されました(パスワード:YESを使用)」と表示されます。

私が使用したクエリは次のとおりです。

LOAD DATA INFILE "~/text/member_info.txt" INTO TABLE member FIELDS TERMINATED BY '|';

PHPでいくつかのループを使用した回避策を考えることができますが、「LOADDATAINFILE」が機能しないのはなぜですか?

ありがとう。

4

1 に答える 1

1

これは、Ubuntu LTS12.04で使用しているMYSQL5.5バージョンによるものです:mysql doc

mysql docコメントから:

PHPを再コンパイルせずに、最近のバージョンのPHPでLOADDATALOCALを使用できます。

5番目のパラメーターとして128(CLIENT_LOCAL_FILES定数の値)をmysql_connect()に渡すと、クライアント側でLOADDATALOCALが有効になります。

例:$ dbh = mysql_connect($ server、$ user、$ pass、false、128);

PHP4.3以降の場合。

しかし実際には、mysql_connect()は廃止されており、mysqliを使用した解決策を見つけることができません。

そういうわけで私は問題を解決するこれを最終的に使用します。

grant file on *.* to mydatabase@localhost identified by 'myuser';

$ mysqli-> query( "LOAD DATAINFILE'"。$proxy_file_name_path。"'IGNOREINTO TABLE mytable(myfield)"

于 2012-11-16T18:45:51.503 に答える