2010-11-22 4 views
7

Я пытаюсь сделать SELECT INTO OUTFILE, и я получаю следующее сообщение об ошибке:SELECT INTO OUTFILE не может записать в файл

General error: 1 Can't create/write to file '/home/jason/projects/mcif/web/downloads/dump.csv' (Errcode: 13). Failing Query: " 
SELECT name 
INTO OUTFILE '/home/jason/projects/mcif/web/downloads/dump.csv' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
FROM account a 

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

  • я не знаю, как узнать, что пользователь MySQL является
  • Я не знаю, как добавить пользователя MySQL к пользователи, которые могут писать в папку downloads

Я нахожусь на Ubuntu Linux. Может кто-нибудь помочь мне обойти эти две вещи?

+0

Это размещаемая Окружающая среда? Как вызывается SQL? Если это с веб-сервера, пользователь, скорее всего, использует веб-сервер для запуска обработчиков запросов. – 2010-11-22 21:12:37

ответ

10

напишите файл /tmp/dump.csv и скопируйте его. Это позволит вам увидеть, кто что работает. Я предполагаю, что вы делаете это из Интернета, а клиент работает как процесс веб-сервера ...

+0

Вы правы. Это `www-data`. Это позаботится о проблеме 1. – 2010-11-22 21:25:38

0

Вот дискуссия, которая может помочь: How can I have MySQL write outfiles as a different user?

Кроме того, пожалуйста, постарайтесь избежать помутнения ваши вопросы с пухом. В вашем случае вы уже знаете, что это проблема с разрешениями, поэтому все ваши SQL-соединения и таблицы не имеют значения. Вы могли бы просто использовать одно поле из одной таблицы в выбранном вами, чтобы продемонстрировать проблему без помутнения вещей.

0

Клиент, вероятно, будет mysqld. вы должны изменить авторизацию аэродрома, и он будет работать нормально. проверить this answer

7

MySQL -u USERNAME --password = PASSWORD --database = DATABASE --execute = 'SELECT FIELD, FIELD ОТ TABLE LIMIT 0, 10000' -X> file.xml

Смежные вопросы