LOCAL в LOAD DATA INFILE

1 view
Skip to first unread message

A4

unread,
Sep 18, 2007, 6:37:19 AM9/18/07
to ua_mysql
Очередные грабли постигли давеча меня как наказание за нежелание
читать документацию.

Наверное все наслышаны про "very high speed" оператора LOAD DATA
INFILE, потому я применяю его там, где позволяет логика системы и
критична нагрузка на БД.

В конкретном примере данные о поступающих запросах пишутся в comma-
separated лог-файл, который раз в 5 минут загружается в БД с помощью
"LOAD DATA INFILE".
При этом даже не возникает проблем с репликацией данных - достаточно
чтоб загружаемый файл был только на одном сервере.
Все это счастье работало до того, пока его не начали переносить на
удаленный от MySQL-сервера хост.
Вот тут мне начали валиться ошибки а-ля "нет доступа к файлу": минут
40 выполнения chmod-ов на всем, что хоть как-то относится к пути
файла, не привели к результатам.

После прочтения документации проблема решилась сама тривиально - при
загрузке файла в БД на удаленый сервер, MySQL пытается найти файл на
этом самом сервере, и когда не находит, честно пишет "нет доступа к
файлу".
Загрузку локального файла на удаленный MySQL-сервер необходимо
выполнять приблизительно так:

LOAD DATA LOCAL INFILE ...

Ключевое слово LOCAL - указывает, что файл нужно искать на клиенте.

Описанное выше отлично описано в документации, потому это
показательный пример того как можно сохранить уйму времени регулярно
заглядывая в документацию.

http://voituk.kiev.ua/2007/09/12/mysql-load-data-infile-local/

Reply all
Reply to author
Forward
0 new messages