我遇到了一个问题,我写的脚本是从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服务器上完美运行。
在我脱掉头发之前,任何帮助都非常受欢迎
答案 0 :(得分:0)
检查授予用于连接MySQL的PHP用户的权限。
mysql> SHOW GRANTS FOR 'user'@'localhost'
要使导入生效,触发LOAD DATA
的用户必须具有FILE
权限。
mysql> GRANT FILE ON *.* TO 'user'@'localhost'