快速回答,不要求您编辑任何配置文件(并且可以在其他操作系统以及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
打开此文件,我可以看到在这个新版本的MySQL Server中添加了secure-file-priv选项,其默认值为:
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'