mysql 쿼리에 대한 OUTFILE을 찾을 수 없습니다.

mysql 쿼리에 대한 OUTFILE을 찾을 수 없습니다.

OUTFILE(.csv)을 생성하고 이를/tmp에 저장하는 MySql 쿼리가 있습니다. 다음 쿼리를 찾아보세요.

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에 전체 권한을 부여했습니다. 하지만 쿼리를 실행하면 파일이 어디에 저장되어 있는지 잘 모르겠습니다. 어떤 제안이 있으십니까?

답변1

데이터베이스 서버 구성에서 임시 디렉터리로 지정 했지만 /var/lib/mysql/tmp쿼리에는 파일이 저장되어야 한다고 지정했습니다 /tmp. 따라서 이 쿼리에 의해 생성된 파일은 다음 위치에서 찾아야 합니다 /tmp.

그러나 systemd가 있는 서버를 사용하고 데이터베이스에 대해 privatetemp가 활성화된 경우 쿼리에 절대 경로를 지정하더라도 파일이 privatetemp 폴더에 저장될 수 있습니다. 개인 임시 폴더는 다음과 같습니다 /tmp/systemd-mariadb.service-XXXXXXX/tmp/outfile.csv.

관련 정보