如果要将选定的数据从表保存到输出文件,则必须将其保存到secure_file_priv变量指定的已批准目录中。但是,即使将输出文件路径更改为已批准的目录,它仍然无法工作,从而产生以下错误--与我开始使用secure_file_priv指定目录之前得到的错误相同:
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指定的适当目录,因此不应该再收到该错误。当我将路径中的反斜杠更改为正斜杠时,查询工作正常,并创建了该文件。
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系统一样。
发布于 2021-01-24 05:17:41
因为反斜杠是字符串中的元字符。
例如,\n是换行符,而不是两个字符。
https://dev.mysql.com/doc/refman/8.0/en/string-literals.html记录所有具有特殊意义的反斜杠序列。这一页还说:
对于所有其他转义序列,
将忽略反斜杠。也就是说,转义字符被解释为没有转义。例如,\x就是x。
所以你的绳子:
C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\output.txt被解释为以下内容,因为反斜杠没有形成有效的转义序列:
C:ProgramDataMySQLMySQL Server 5.7Uploadsoutput.txt这就是我很久以前放弃微软的原因。他们更了解。反斜杠是编程语言中的转义字符,早在Microsoft首次将其用作目录分隔符之前。他们不该那样做的。
https://stackoverflow.com/questions/65867324
复制相似问题