Tôi đang viết một kịch bản lệnh shell rất đơn giản để đổ một bảng vào tệp CSV. Đây là một phần của nó:Truy vấn MySQL OUTFILE phàn nàn rằng "tệp đã tồn tại" nhưng tệp không tồn tại ở tất cả
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>
Tôi đặt trong rm $file
để đảm bảo rằng tệp không tồn tại trước khi thực hiện truy vấn.
Tuy nhiên, khi tôi thực thi kịch bản, tôi nhận được thông điệp mâu thuẫn:
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
tôi không thể tìm thấy bất cứ nơi nào OUTFILE trong máy.
Vì vậy, điều gì sai ...?
Cảm ơn bạn.
Hiện/tmp có tồn tại không? Bạn có quyền ghi vào nó không? Tôi tự hỏi nếu MySQL đang cố gắng ghi vào/mysql/tmp/thay vì liên quan đến nơi bạn đang thực thi kịch bản lệnh shell. –
cảm ơn Jacob./tmp tồn tại và có thể ghi. Thực hiện thủ công truy vấn chạy thành công. –
Tôi nhận thấy rằng thực hiện thủ công truy vấn thành công lần đầu tiên, nhưng không phải lần thứ hai ... –