LOAD DATA INFILE Код ошибки: 13 - PullRequest
46 голосов
/ 18 ноября 2010

В моем удаленном MySQL, когда я пытаюсь выполнить этот запрос, я получаю код ошибки MySQL: 13.

Запрос -

LOAD DATA INFILE 
'/httpdocs/.../.../testFile.csv'
INTO TABLE table_temp
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\\r \\n'
(sku, qty);

Код ошибки: 13 Can't get stat of '/httpdocs/.../.../testFile.csv' (Errcode: 2)

а.База данных userlogin имеет все привилегии.

CREATE USER 'userName'@'%' IDENTIFIED BY '************';

GRANT ALL PRIVILEGES ON * . * TO 'userName'@'%' IDENTIFIED BY '************' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT ALL PRIVILEGES ON `userName\_%` . * TO 'userName'@'%';

b.Я также установил права доступа к файлам и папкам для chmod 777 (rwxrwxrwx) с помощью FTP Tool

Ответы [ 16 ]

0 голосов
/ 28 июня 2019

Я тоже боролся с этой проблемой в течение последних нескольких дней, и я тоже повернулся, чтобы переполнить стек для ответов.

Однако, похоже, никто не упоминает, что самый простой способ импортировать данные в MySQL - это использовать собственный инструмент импорта данных !!

Просто щелкните правой кнопкой мыши по столу, и он появится там.

just right click on the table and it comes up there

Ни один из приведенных выше ответов не помог мне, поэтому просто используйте его, если вызастрял!:)

0 голосов
/ 03 марта 2019
  1. извлечение этой системной переменной local_infile включено
 SHOW VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+

Если нет, перезапустите mysqld с помощью:

sudo ./mysqld_safe --local-infile
  1. измените ваш CSV-файл на папку /tmp, чтобы он мог читать его.

  2. импорт в дБ

mysql> LOAD DATA INFILE '/tmp/a.csv'  INTO TABLE table_a  FIELDS TERMINATED BY ','  ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Query OK, 18 rows affected (0.17 sec)
Records: 18  Deleted: 0  Skipped: 0  Warnings: 0
0 голосов
/ 09 августа 2017

OLD:

LOAD DATA INFILE '/home/root12/Downloads/task1.csv' INTO TABLE test.task FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

File '/home/root12/Downloads/task1.csv' not found (Errcode: 13 - Permission denied)

НОВАЯ РАБОТА ДЛЯ МЕНЯ:

LOAD DATA LOCAL INFILE '/home/root12/Downloads/task1.csv' INTO TABLE test.task FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

Query OK, 500 rows affected, 284 warnings (1.24 sec)
Query OK, 5000 rows affected, 2846 warnings (1.24 sec)
0 голосов
/ 13 мая 2017

Если вы используете cPanel или phpmyadmin для импорта CSV using LOAD DATA, тогда обязательно включите Use LOCAL keyword. Это сработало для меня в среде общего сервера.

0 голосов
/ 19 апреля 2017

load data infile '/root/source/in.txt' into table employee; ==> Код ошибки: 13

load data infile '/tmp/in.txt' into table employee; ==> работает

CentOS выпуск 6.6 (финальный) - 5.5.32 MySQL Community Server (GPL)

что-то, связанное с правами доступа к файлу Linux

0 голосов
/ 15 апреля 2016

Я столкнулся с той же проблемой и применил решения, описанные выше.

Прежде всего, моя тестовая среда выглядит следующим образом

  • Ubuntu 14.04.3 64bit
  • mysqlВерсия 14.14 Distrib 5.5.47, для debian-linux-gnu (x86_64) с использованием readline 6.3 (устанавливается просто командой 'sudo apt-get install ...')

Мои результаты тестирования

i) Решение AppArmor работает только для случаев / tmp.

ii) Следующее решение работает без решения AppArmor.Я хотел бы поблагодарить Авниша Мехту за его ответ.

$ mysql -u root -p --in-file=1
...
mysql> LOAD DATA LOCAL INFILE '/home/hongsoog/study/mysql/member.dat'
    -> INTO TABLE member_table;

Важными тремя моментами являются

  • запуск клиента mysql с параметром --in-file = 1
  • используйте LOAD DATA LOCAL INFILE вместо LOAD DATA INFILE
  • проверьте, что все элементы пути имеют мировое разрешение на чтение из пути к файлу данных / to.Например, следующий подпуть должен быть читаемым для всех или читаемой группой mysql, если INFILE нацелен на '/home/hongsoog/study/mysql/memer.dat'

    • / home
    • /home / hongsoog
    • / home / hongsoog / учеба / mysql
    • / home / hongsoog / учеба / mysql / member.data

Когда вы запускаете клиент mysql БЕЗ опции «--in-file = 1» и используете

LOAD DATA LOCAL INFILE ...
, вы получите

ОШИБКА 1148 (42000): используемая команда не разрешена сэта версия MySQL


В итоге, опция "--in-file = 1" в команде клиента mysql и "LOAD DATA LOCAL INFILE ..." должны идти рука об руку.

Надеюсь на помощь всем.

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