首页 > 解决方案 > 加载数据本地infile停止工作,它没有给出任何错误

问题描述

我有一个 PHP 脚本,我在其中上传了一个 CSV 文件,并将这个更新/插入行到 mysql 数据库中,所有这些都在 ubuntu 18.04 服务器上,这个 PHP 脚本已经运行了很多年没有问题,服务器运行了 1 年多,突然几周前,服务器或软件上的任何更改都停止工作。

奇怪的是它没有产生任何错误,没有日志错误,什么都没有,所以我无法调试。

几天前我读了很多书,没有任何运气,所以我不知道该怎么办。

在我的测试和类似问题的测试中,我发现了这一点:

这是使用的代码:

LOAD DATA LOCAL INFILE '/path/to/temp/file' INTO TABLE pagos_nuevos CHARACTER SET latin1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES 
(cuenta, @pago, @fpago) SET pago = CAST(REPLACE(REPLACE(@pago,',',''),'$','') AS DECIMAL(10,2)), fpago = STR_TO_DATE(@fpago, '%d/%m/%Y')  

正如我一开始所说,这不是新服务器,这不是新代码,已经工作了很多年,调试时我只在屏幕上收到了这个:

Query: LOAD DATA LOCAL INFILE '/path/to/temp/file' INTO TABLE pagos_nuevos CHARACTER SET latin1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES 
(cuenta, @pago, @fpago) SET pago = CAST(REPLACE(REPLACE(@pago,',',''),'$','') AS DECIMAL(10,2)), fpago = STR_TO_DATE(@fpago, '%d/%m/%Y') failed
0: 

其中“0:”必须是错误代码,“:”之后是错误描述。

如果我删除 LOCAL,我会收到此错误:

Query: LOAD DATA LOCAL INFILE '/path/to/temp/file' INTO TABLE pagos_nuevos CHARACTER SET latin1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES 
(cuenta, @pago, @fpago) SET pago = CAST(REPLACE(REPLACE(@pago,',',''),'$','') AS DECIMAL(10,2)), fpago = STR_TO_DATE(@fpago, '%d/%m/%Y')
not found (Errcode: 13 - Permission denied)

29:找不到文件'/var/www/html/testing/unicomer/pagos/datos/pagos/pagos al 29.csv'(错误代码:13 - 权限被拒绝)

我对一个拥有所有特权的用户进行了测试,但没有成功,所以我不知道这是 mysql 问题还是服务器问题。

非常感谢您的帮助。

标签: phpmysqlubuntu

解决方案


推荐阅读