Ответ 1
Быстрый ответ, который не требует, чтобы вы редактировали любые файлы конфигурации (и работали как в других операционных системах, так и в Windows), просто найдите каталог, который вы можете сохранить для использования:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)
И затем убедитесь, что вы используете этот каталог в операторе SELECT
"INTO OUTFILE
:
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Оригинальный ответ
У меня была такая же проблема с момента обновления с MySQL 5.6.25 до 5.6.26.
В моем случае (в Windows) просмотр службы MySQL56 показывает мне, что файл параметров/настроек, который используется при запуске службы, - C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
Открывая этот файл, я вижу, что опция secure-file-priv
была добавлена в эту новую версию MySQL Server со значением по умолчанию:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads"
Вы можете прокомментировать это (если вы находитесь в непроизводственной среде) или поэкспериментировать с изменением настройки. Не забудьте перезапустить службу после внесения изменений.
В качестве альтернативы вы можете попытаться сохранить свой вывод в разрешенной папке (расположение может отличаться в зависимости от вашей установки):
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'