PHP Joomla 2.5 MySQL Load Data Infile - в разрешении отказано

Я пытаюсь загрузить файл CSV в таблицу. Я получаю сообщение об ошибке в разрешении:

Error importing CSV File: (1045) Access denied for user 'username'@'localhost' 
(using password: YES) 
SQL=LOAD DATA INFILE '//homeX/username/public_html/activator/uploadedCSV/20180603064917_csvtoimport.csv'
  IGNORE INTO TABLE `csv_import_temp` 
  FIELDS TERMINATED BY ',' 
  OPTIONALLY ENCLOSED BY '"' 
  ESCAPED BY '\\' 
  LINES TERMINATED BY '\r\n' 
  IGNORE 1 ROWS 
  ( contact_lname, contact_email ) ;

Файл csv существует, и для него установлены права доступа 0644.

Оператор SQL:

LOAD DATA INFILE '//homeX/username/public_html/activator/uploadedCSV/20180603064917_csvtoimport.csv'
IGNORE
INTO TABLE `csv_import_temp`
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(
    contact_lname,
    contact_email
);

Я пробовал использовать его как с ведущей одинарной косой чертой, так и с двойной косой чертой (как указано выше) в имени файла. Я также пробовал запустить его в phpAdmin и получил то же сообщение об ошибке.

Сайт размещен на общей учетной записи Hostgator.

Я добавил код, чтобы убедиться, что файл существует и имеет нужные разрешения, и он говорит, что это так. Но похоже, что MySQL не может получить доступ к файлу.

Да, я знаю, что Joomla 2.5 - это конец жизни, но по многим причинам этот сайт нельзя обновить, и он используется только для функций администратора.

Любые предложения приветствуются, поскольку альтернативой является чтение файла с помощью PHP и вставка каждой строки, что будет намного медленнее.

Первые 4 строки CSV:

"name","email"
"John Smith","[email protected]"
"John Doe","[email protected]"
"Jane Doe","[email protected]"
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта ошибка обычно возникает из-за того, что вы не добавили ключевое слово LOCAL. Пытаться:

LOAD DATA LOCAL INFILE '//homeX/username/public_html/activator/uploadedCSV/20180603064917_csvtoimport.csv'
IGNORE
INTO TABLE `csv_import_temp`
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY ''
IGNORE 1 ROWS
(
    contact_email,
    contact_email
);

Ошибка разрешения вводит в заблуждение, она связана с попыткой обращения к системным каталогам mysql, а не к файлу, который вы пытаетесь прочитать.

Спасибо, @Nick! Теперь он работает, но импортирует только первую запись из 293 строк в файле. Может быть, это из-за IGNORE во 2-й строке запроса?

Sloan Thrasher 03.06.2018 14:26

Рад, что это помогло вам начать работу! IGNORE используется для исключения заголовков и т. д., Поэтому он должен начинаться со второй строки. Данные неконфиденциальные? Если да, вы можете задать еще один вопрос и включить строки 1–4, и, надеюсь, мы сможем решить эту проблему.

Nick 03.06.2018 14:46

Я добавил первые 4 строчки. Данные изменены, так как содержат настоящие имена и адреса электронной почты.

Sloan Thrasher 03.06.2018 14:52

Попробуйте удалить LINES TERMINATED BY '\r\n', это выглядит неправильно.

Nick 03.06.2018 14:55

Нет, по-прежнему импортирована только 1 строка. Строки в файле заканчиваются символами \ r \ n, а не \ n.

Sloan Thrasher 03.06.2018 15:00

В чем смысл двойного импорта contact_email? Разве они не должны быть разными? Возможно ли, что поле / столбец, не включенный в импорт, должен быть уникальным и ненулевым? Попробовав ВСТАВИТЬ вторую строку вручную, вы должны получить больше отзывов.

Nick 03.06.2018 15:07

Я попробую.

Sloan Thrasher 03.06.2018 15:10

Нашел проблему. Столбец id должен увеличиваться автоматически, но это не было установлено. Как только это будет исправлено, он импортирует весь файл. Еще раз спасибо за помощь!!

Sloan Thrasher 03.06.2018 15:13

Другие вопросы по теме