【发布时间】:2015-03-23 20:51:54
【问题描述】:
我发布了这个解决方案,因为它让我发疯了几天——原来是 AppArmor 设置。这个线程终于让我解决了: How can I get around MySQL Errcode 13 with SELECT INTO OUTFILE?
我看到这被标记为重复,但所有其他建议似乎都指向编辑 my.cnf,这对我不起作用。
我无法让 Load Data Local Infile 工作。我的 MySQL 服务器版本是 5.5.41,我的 Ubuntu 版本是 14.04.2。我的 my.cnf 在 mysql、mysqld 和 client 下有“local-infile”。根据 Stackoverflow 上的另一篇文章,我在连接字符串中指定了标志 128。下面的代码在我在客户端上运行时效果很好,但现在它存在于服务器上,它会不断抛出
"此 MySQL 版本不允许使用的命令。
编辑,从命令行运行这个是成功的:
mysql> LOAD DATA LOCAL INFILE '/home/aa/ER.csv'
-> INTO TABLE ER_import
-> FIELDS TERMINATED BY ','
-> LINES TERMINATED BY '\r\n'
-> IGNORE 1 LINES
-> (Paid_Amount,
-> Pro_Number,
-> Invoice,
-> Ship_Date,
-> BL,
-> Carrier_Name,
-> Check_Number,
-> Paid_Date,
-> Shipper_City,
-> Shipper_State,
-> Shipper_Name_1,
-> Recipient_City,
-> Recipient_State,
-> Recipient_Name_1,
-> Batch_Number,
-> Actual_Weight,
-> Billed_Amount
-> );
Query OK, 8585 rows affected, 4 warnings (0.21 sec)
Records: 8585 Deleted: 0 Skipped: 0 Warnings: 4
然而这不断重新调整该文件未找到:“文件'/home/aa/ER.csv'未找到(Errcode:13)”该文件肯定存在并且权限是正确的:
$delete = "DELETE FROM ER_import";
if (!mysqli_query($conn,$delete))
{
echo("Error description: " . mysqli_error($conn));
}
$query = <<<eof
LOAD DATA INFILE '/home/aa/ER.csv'
INTO TABLE ER_import
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(Paid_Amount,
Pro_Number,
Invoice,
Ship_Date,
BL,
Carrier_Name,
Check_Number,
Paid_Date,
Shipper_City,
Shipper_State,
Shipper_Name_1,
Recipient_City,
Recipient_State,
Recipient_Name_1,
Batch_Number,
Actual_Weight,
Billed_Amount
);
eof;
if($results = mysqli_query($conn, $query)){
echo $file. " has been imported!";
} else die(mysqli_error($conn));
有什么明显的吗??
【问题讨论】:
标签: php mysql ubuntu load-data-infile