加载数据本地infile停止工作,并且没有给出任何错误

时间:2019-05-02 17:13:00

标签: php mysql ubuntu

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

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

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

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

  • 如果我直接在服务器上运行“加载数据本地文件”,则会起作用
  • 文件上传正常,我可以进行777完美无瑕的更改
  • 在mysql上启用了infile
  • 已配置了Apparmor
  • 连接到数据库的用户具有FILE特权

以下是使用的代码:

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问题还是服务器问题。

非常感谢您的帮助。

0 个答案:

没有答案