MariaDBの「INTO OUTFILE」で/tmp配下にファイルを出力しようとすると「ERROR 1086 (HY000): File ‘XXXX’ already exists.」でエラーになる
CentOS7のMariaDBで同じことをやっていた時には問題なかったのですが、
RockyLinux8で同じスクリプトを走らせて、/tmp配下にファイルを出力しようとすると、
ファイルはないのに「File already exists」でエラーに。
何度やってもダメなので調べたところ、/tmp直下にファイルを吐けないようになっている場合があるらしい。
/usr/lib/systemd/system/mariadb.service
が以下の様に違っていました。
/tmpに吐けてたやつ # If you don't use the /tmp directory for SELECT ... OUTFILE and # LOAD DATA INFILE you can enable PrivateTmp=true for a little more security. PrivateTmp=false
/tmpに吐けなかったやつ # Place temp files in a secure directory, not /tmp PrivateTmp=true
PrivateTmp=false
にしてMariaDB再起動すると直るみたいです。
てっきり、OS大元の設定かと思ったのですが、サービスごとの設定とはね。知らなかったわぁ。