PHP Joomla 2.5 MySQL Load Data Infile - Отказано в доступе - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь загрузить файл 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","xxx1@yyy.edu"
"John Doe","xxx2@yyy.edu"
"Jane Doe","xxx3@yyy.edu"

1 Ответ

0 голосов
/ 03 июня 2018

Эта ошибка обычно связана с тем, что вы не указали ключевое слово 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, а не к файлу, который вы пытаетесь прочитать.

...