Linux

找不到mysql查詢的OUTFILE

  • March 6, 2017

我有一個 MySql 查詢,我從中生成一個 OUTFILE (.csv),並將其保存在 /tmp 中。請在下面找到查詢:

SELECT 'Artifact ID' id, 'Related Links' new_value UNION select CONCAT(si.ID_PREFIX, si.ID_COUNT) as ID, tmp.NEW_VALUE from ( select ACTIVITY_ID, ISSUE_ID, OLD_VALUE, NEW_VALUE from SCARAB_ACTIVITY where ISSUE_ID in (select ISSUE_ID from SCARAB_ISSUE where MODULE_ID = 775)  and (NEW_VALUE like 'http%') order by ACTIVITY_ID desc) tmp, SCARAB_ISSUE si where tmp.ISSUE_ID = si.ISSUE_ID INTO OUTFILE '/tmp/flexsustain_test_relatedlinks.csv' FIELDS ENCLOSED BY '' TERMINATED BY ',';

我已經嘗試配置 /etc/my.cnf 文件

[mysqld]
datadir=/var/lib/mysql
tmpdir = /var/lib/mysql/tmp
socket=/var/lib/mysql/mysql.sock
read-only = 0

我也給了 tmpdir 的完全權限。但是當我執行查詢時,不確定文件的保存位置。有什麼建議麼 ?

您已/var/lib/mysql/tmp在數據庫伺服器的配置中指定為臨時目錄,但您確實在查詢中指定該文件應保存在/tmp. 因此,您應該在該目錄下找到該查詢產生的文件/tmp

但是,如果您使用帶有 systemd 的伺服器並且為 db 啟用了 privatetemp,那麼即使您在查詢中指定了絕對路徑,該文件也可能會儲存在 privatetemp 文件夾下。私人臨時文件夾將類似於/tmp/systemd-mariadb.service-XXXXXXX/tmp/outfile.csv.

引用自:https://unix.stackexchange.com/questions/349419