MariaDBの「INTO OUTFILE」で/tmp配下にファイルを出力しようとすると「ERROR 1086 (HY000): File ‘XXXX’ already exists.」でエラーになる

【PR】
※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。

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大元の設定かと思ったのですが、サービスごとの設定とはね。知らなかったわぁ。

Tips

Posted by admin