Локальные данные загрузки данных перестают работать, и это не дает никакой ошибки - PullRequest
0 голосов
/ 02 мая 2019

У меня есть сценарий PHP, куда я загружаю файл CSV, и это обновление / вставка строк в базу данных mysql, все на сервере ubuntu 18.04, и этот сценарий PHP много лет работал без проблем, сервер работал более 1 года внезапно, пару недель назад, при каких-либо изменениях на сервере или программном обеспечении перестало работать.

Странно то, что он не генерирует никаких ошибок, нет ошибок в журналах, ничего, поэтому я не могу отладить.

Несколько дней назад я много читал без удачи, поэтому я не уверен, что делать.

На моих тестах и ​​подобных тестах я обнаружил следующее:

  • Если я запускаю «Загрузить данные локального файла» непосредственно на сервере, это работает
  • Файл загружается нормально, я могу дать разрешение 777 и ничего не меняется
  • infile включен на mysql
  • apparmor настроен
  • пользователь, который подключается к базе данных, имеет ФАЙЛ на привилегиях

Вот используемый код:

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 или проблемой с сервером.

Большое спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...