MySQL OUTFILE查询抱怨“文件已存在”,但该文件根本不存在

时间:2013-02-07 22:54:35

标签: mysql linux

我正在编写一个非常简单的shell脚本来将表转储到CSV文件中。以下是其中的一部分:

day=`/bin/date +'%Y-%m-%d'`
file="/tmp/table-$day.csv"
rm $file
query="SELECT * FROM table INTO OUTFILE '$file' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\\n'"
echo "$query" | mysql <connection_parameters>

我放入rm $file以确保在查询执行之前该文件不存在。

然而,当我执行脚本时,我收到了相互矛盾的消息:

rm: cannot remove `/tmp/table-2013-02-08.csv': No such file or directory
ERROR 1086 (HY000) at line 1: File '/tmp/table-2013-02-08.csv' already exists

我无法在机器的任何地方找到OUTFILE。

那有什么不对..?

谢谢。

2 个答案:

答案 0 :(得分:9)

我找到了答案。

OUTFILE在MySQL服务器上创建文件,而不是在MySQL客户端的机器上创建文件。

答案 1 :(得分:0)

检查/ etc / passwd

中是否包含此内容

mysql:x:27:27:MariaDB服务器:/ var / lib / mysql:/ sbin / nologin

将shell更改为/ bin / bash