La requête MySQL OUTFILE se plaint que “le fichier existe déjà” mais que le fichier n’existe pas du tout

J’écris un script shell très simple pour transférer une table dans un fichier CSV. En voici une partie:

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  

J’ai mis en rm $file pour m’assurer que le fichier n’existe pas avant l’exécution de la requête.

Cependant, lorsque j’exécute le script, je reçois des messages contradictoires:

 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 

Je ne trouve pas la sortie n’importe où dans la machine.

Alors, qu’est-ce qui ne va pas?

Je vous remercie.

J’ai trouvé la réponse.

OUTFILE crée le fichier sur le serveur MySQL, plutôt que sur la machine de mon client MySQL.

Vérifiez si vous avez ceci dans / etc / passwd

mysql: x: 27: 27: Serveur MariaDB: / var / lib / mysql: / sbin / nologin

changer le shell à / bin / bash à la place