首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Windows mysql客户端在通过命令提示符使用到OUTFILE时会出现正斜杠?

为什么Windows mysql客户端在通过命令提示符使用到OUTFILE时会出现正斜杠?
EN

Stack Overflow用户
提问于 2021-01-24 05:07:21
回答 1查看 61关注 0票数 1

如果要将选定的数据从表保存到输出文件,则必须将其保存到secure_file_priv变量指定的已批准目录中。但是,即使将输出文件路径更改为已批准的目录,它仍然无法工作,从而产生以下错误--与我开始使用secure_file_priv指定目录之前得到的错误相同:

代码语言:javascript
运行
复制
mysql> SELECT * FROM customers
-> INTO OUTFILE " C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\output.txt";
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

由于我已经将目录更改为由secure_file_priv指定的适当目录,因此不应该再收到该错误。当我将路径中的反斜杠更改为正斜杠时,查询工作正常,并创建了该文件。

代码语言:javascript
运行
复制
mysql> SELECT * FROM customers
-> INTO OUTFILE "/ProgramData/MySQL/MySQL Server 5.7/Uploads/output.txt";
Query OK, 2 rows affected (0.00 sec)

为什么会这样呢?我所有这些都是通过命令行在Windows上完成的,所以我不明白为什么要使用正斜杠,就好像我在使用*nix系统一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-24 05:17:41

因为反斜杠是字符串中的元字符。

例如,\n是换行符,而不是两个字符。

https://dev.mysql.com/doc/refman/8.0/en/string-literals.html记录所有具有特殊意义的反斜杠序列。这一页还说:

对于所有其他转义序列,

将忽略反斜杠。也就是说,转义字符被解释为没有转义。例如,\x就是x。

所以你的绳子:

代码语言:javascript
运行
复制
C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\output.txt

被解释为以下内容,因为反斜杠没有形成有效的转义序列:

代码语言:javascript
运行
复制
C:ProgramDataMySQLMySQL Server 5.7Uploadsoutput.txt

这就是我很久以前放弃微软的原因。他们更了解。反斜杠是编程语言中的转义字符,早在Microsoft首次将其用作目录分隔符之前。他们不该那样做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65867324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档