Это потому, что системная учетная запись, под которой работает MySQL, не имеет права читать этот файл.
Если вы не указали LOCAL
, файл читается непосредственно сервером MySQL и должен иметь права на чтение этого файла.
При добавлении LOCAL
файл читается MySQL клиентской программы не серверный процесс и в вашем случае, по-видимому, имеет доступ к файлу CSV, который я полагаю, находится где-то в пользовательском каталоге счета при которые вы работаете.
Если вы поместите этот файл в каталог, в котором процесс MySQL имеет право читать (например, /tmp/myfile.csv
) LOAD DATA INFILE
будет работать нормально.
LOAD DATA INFILE
ЛОКАЛЬНЫЙ ключевое слово влияет где файл ожидается найдено:
- Если указан LOCAL, то файл читается клиентской программы на клиентском хосте и послал к серверу. Файл может быть указан как полное имя пути , чтобы указать его точное местоположение. Если задано как относительный путь , имя интерпретируется относительно каталога, в котором была запущена клиентская программа .
- Если LOCAL не указан, файл должен находиться на хосте сервера и считывается напрямую на сервере.
Я на самом деле голосования это как дубликат http://stackoverflow.com/questions/3971541/what-file-and-directory-permissions-are-required-for-mysql-load-data- infile –