2014-01-09 3 views
0

Я загружаю файл csv в экземпляр mysql, запущенный на локальном хосте. Я могу сделать это, используя синтаксис LOAD DATA LOCAL INFILE, но мне интересно, почему мне нужен LOCAL, если сервер и файл находятся на одном компьютере. Без местных, я получаю сообщение об ошибке:mysql load data infile localhost

ERROR 13 (HY000): Can't get stat of '/path/to/myfile.csv' (Errcode: 13) 
+0

Я на самом деле голосования это как дубликат http://stackoverflow.com/questions/3971541/what-file-and-directory-permissions-are-required-for-mysql-load-data- infile –

ответ

1

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

Если вы не указали LOCAL, файл читается непосредственно сервером MySQL и должен иметь права на чтение этого файла.

При добавлении LOCAL файл читается MySQL клиентской программы не серверный процесс и в вашем случае, по-видимому, имеет доступ к файлу CSV, который я полагаю, находится где-то в пользовательском каталоге счета при которые вы работаете.

Если вы поместите этот файл в каталог, в котором процесс MySQL имеет право читать (например, /tmp/myfile.csv) LOAD DATA INFILE будет работать нормально.

LOAD DATA INFILE
ЛОКАЛЬНЫЙ ключевое слово влияет где файл ожидается найдено:

  • Если указан LOCAL, то файл читается клиентской программы на клиентском хосте и послал к серверу. Файл может быть указан как полное имя пути , чтобы указать его точное местоположение. Если задано как относительный путь , имя интерпретируется относительно каталога, в котором была запущена клиентская программа .
  • Если LOCAL не указан, файл должен находиться на хосте сервера и считывается напрямую на сервере.
+0

Хотя я изменил права доступа к каталогу и файлу данных на 777, значит, это не должно работать без локального? –

+0

Вы используете абсолютный путь или относительный? – peterm

+0

Я использую абсолютный путь. mysql работает на моей локальной машине. У меня есть папка на моем рабочем столе с разрешениями 777, и я сделал «LOAD DATA INFILE»/home/me/Desktop/data/myfile.csv'', и у обоих 'data' и' myfile.csv' есть разрешения 777 –