Piszę bardzo prosty skrypt powłoki, aby zrzucić tabelę do pliku CSV. Oto część z nich:Zapytanie MySQL OUTFILE narzeka, że "plik już istnieje", ale plik w ogóle nie istnieje
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>
umieścić w rm $file
, aby upewnić się, że plik nie istnieje przed wykonaniem kwerendy użytkownika.
Jednak, kiedy wykonać skrypt, dostaję sprzeczne komunikaty:
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
I nie można znaleźć nigdzie plik_wy w maszynie.
Co jest nie tak ...?
Dziękuję.
Czy/tmp istnieje? Czy masz do niego prawo zapisu? Zastanawiam się, czy MySQL próbuje pisać do/mysql/tmp/zamiast do miejsca, w którym wykonujesz skrypt powłoki. –
dzięki Jacob./tmp istnieje i jest zapisywalny. Ręczne wykonywanie kwerendy działa poprawnie. –
Zauważyłem, że ręczne wykonanie kwerendy powiedzie się po raz pierwszy, ale nie po raz drugi ... –