0

csv ファイルの内容から在庫レベルを自動的に更新するために作成したスクリプトに問題があります。私のローカルの zend サーバーでは、完全に機能しました。phpMyAdmin にはユーザー root があり、パスワードがないことに注意してください。

しかし、クライアントサーバーにアップロードすると、エラーメッセージが表示されます:

PHP Fatal error:  1045:Access denied for user 'xxxxxx_xxxxxx'@'localhost' (using password: YES) ::     LOAD DATA INFILE '/home/xxxxxxxx/public_html/tradeboxstock/stock.csv'
 INTO TABLE stock_temp
 FIELDS TERMINATED BY ','
 ENCLOSED BY '"'
 LINES TERMINATED BY '
'  (products_model, products_quantity); in /home/xxxxxxxx/public_html/includes/classes/db/mysql/query_factory.php on line 121

コードのセクションは次のとおりです。

//Set directory of csv file
$file_path = DIR_FS_CATALOG . 'tradeboxstock/stock.csv';

// Empty old data from the temp table
$db->Execute("DELETE FROM ".TABLE_STOCK_TEMP."");
$table = ("".TABLE_STOCK_TEMP."");
echo "Historical stock data cleared";
?>
</br>
<?php
echo "Processing - Please wait...";

//extract data from the csv to the temp table
$query = <<<eof
LOAD DATA INFILE '$file_path'
INTO TABLE $table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(products_model, products_quantity);
eof;
$db->Execute($query);
echo "Import to temp database table complete";

過去の在庫が消去されたというエコーが表示されるため、データベースへの接続に問題がないことはわかっていますが、csv コンテンツを読み取る必要があるセクションに到達したときにアクセス拒否エラーが発生する理由がわかりません一時テーブルに。

述べたように、これは私のローカル zend サーバーで完全に機能します。

髪を引き裂く前に、どんな助けも大歓迎です

4

1 に答える 1

0

MySQL への接続に使用されている PHP ユーザーに付与されている権限を確認してください。

mysql> SHOW GRANTS FOR 'user'@'localhost'

インポートを機能させるには、実行するユーザーに権限LOAD DATAが必要です。FILE

mysql> GRANT FILE ON *.* TO 'user'@'localhost'
于 2013-05-28T17:59:42.493 に答える