使用设置目录时,MySQL 导出 INTO OUTFILE --secure-file-priv 错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/33691094/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
MySQL exporting INTO OUTFILE --secure-file-priv error when using set directory
提问by Lateralus
I'm trying to run the following on a MySQL database:
我正在尝试在 MySQL 数据库上运行以下内容:
SELECT * FROM mysql.db
INTO OUTFILE "C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\db.csv"
FIELDS TERMINATED BY '|'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
I get the error:
我收到错误:
SQL Error (1290): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
When I run the following:
当我运行以下命令时:
mysql> SELECT @@secure_file_priv;
I get:
我得到:
+------------------------------------------------+
| @@secure_file_priv |
+------------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\ |
+------------------------------------------------+
So why is it not exporting the file even though I am using the set --secure-file-priv location?
那么为什么即使我使用 set --secure-file-priv 位置它也不导出文件?
I am used to MSSQL and new to MySQL.
我习惯了 MSSQL 和 MySQL 新手。
回答by Sayali Sonawane
It is important to use path location mentioned in:
使用中提到的路径位置很重要:
mysql> SELECT @@secure_file_priv;
If you will use customized path location, you will still get this error. As mentioned by Lateralus, don't forget to change path to forward slashes.
如果您将使用自定义路径位置,您仍然会收到此错误。正如 Lateralus 所提到的,不要忘记将路径更改为正斜杠。
回答by Lateralus
Argh. It was a freakin' typo, my \'s should have been /'s
啊。这是一个奇怪的错字,我的 \'s 应该是 /'s
So my query is now this:
所以我的查询现在是这样的:
SELECT * FROM mysql.db INTO OUTFILE "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/db_pipe.csv" FIELDS TERMINATED BY '|' ENCLOSED BY '"' LINES TERMINATED BY '\n';
回答by PRITISH
This worked for me. It needs double backslash and if you are trying any tools in between to connect to mysql simply add escape chars.
这对我有用。它需要双反斜杠,如果您正在尝试连接到 mysql 之间的任何工具,只需添加转义字符即可。
SELECT *
INTO OUTFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\employees.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM employees;
回答by mdivk
In my case (Windows):
就我而言(Windows):
In my.ini, set
secure_file_priv=""
Use double back slash in the path like below:
在 my.ini 中,设置
secure_file_priv=""
在如下路径中使用双反斜杠:
SELECT description, comment FROM usecase INTO OUTFILE 'C:\tmp\usecase0.csv' FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"' LINES TERMINATED BY '\r\n';
SELECT description, comment FROM usecase INTO OUTFILE 'C:\tmp\usecase0.csv' FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"' LINES TERMINATED BY '\r\n';