MySQL выбирает в outfile / tmp нет вывода
Я не могу получить следующий код для получения результата. Пользователь MySQL имеет уровень гранта" все", / tmp доступен для записи, запрос возвращает набор результатов.
mysql> SELECT field FROM test_table WHERE condition='test'
-> INTO OUTFILE '/tmp/test.csv'
-> FIELDS TERMINATED BY ','
-> ENCLOSED BY '"'
-> LINES TERMINATED BY 'n';
Query OK, 1 row affected (0.00 sec)
mysql>
[1]+ Stopped mysql
[root@web1 ~]# cat /tmp/test.csv
cat: /tmp/test.csv: No such file or directory
должен ли я видеть разные выходные данные от MySQL в случае сбоя?
могу ли я проверить результат дальше, чем"1 строка затронута"?
3 ответов
файлы, генерируемые предложением outfile, создаются на хосте сервера mysql. Пожалуйста, убедитесь, что вы ищете на хосте сервера mysql, поскольку кажется, что вы находитесь на хосте клиента, который, скорее всего, не является хостом сервера mysql.
см.http://dev.mysql.com/doc/refman/5.0/en/select.html в разделе о outfile для документации, касающейся этого.
я столкнулся с этой проблемой в Fedora 17, и это было вызвано systemd. Я думаю, хорошо поделиться.
mysql> select * into outfile '/tmp/z1' from t1;
Query OK, 673 rows affected (0.01 sec)
mysql> select * into outfile '/tmp/z2' from t1;
Query OK, 673 rows affected (0.01 sec)
mysql> select * into outfile '/tmp/z1' from t1;
ERROR 1086 (HY000): File '/tmp/z1' already exists
mysql> Bye
# cat /tmp/z1
cat: /tmp/z1: No such file or directory
# ls -d systemd-*
/tmp/systemd-private-AQEueG
/tmp/systemd-private-AuCNDY
/tmp/systemd-private-TOMNxZ
/tmp/systemd-private-UacrpE
/tmp/systemd-private-yal7lQ
/tmp/systemd-private-ZlRJeN
# ls /tmp/systemd-private-TOMNxZ
z1 z2
преступник был в /usr/lib в/systemd в/системы/тузды.услуга.
# Place temp files in a secure directory, not /tmp
PrivateTmp=true
спасибо этот блог, я нашел ключ.
звучит так, как будто вы можете столкнуться с проблемой разрешений файлов. Убедитесь, что пользователь:группа, под которой работает mysqld, имеет разрешение adaqute на запись в /tmp/test.csv
существует множество вариантов разрешения демона сервера/файла, которые решат проблему. Предположительно UNIX-based, вы могли бы: chgrp mysqldGROUP / tmp
но это кажется таким простым - ваш сервер настроен определенным образом, поэтому вы адаптируетесь к этому. Процесс mysqld должен на самом деле можно читать/писать только из нескольких мест.