2009-06-24 6 views
13

출력을 생성하기 위해 다음 코드를 얻을 수 없습니다. MySQL 사용자는 "all"grant level을 가지며,/tmp는 쓰기 가능하며 쿼리는 결과 set을 반환합니다. MySQL이 outfile/tmp에 출력을 선택하지 않았습니다.

mysql> SELECT field FROM test_table WHERE condition='test' 
    -> INTO OUTFILE '/tmp/test.csv' 
    -> FIELDS TERMINATED BY ',' 
    -> ENCLOSED BY '"' 
    -> LINES TERMINATED BY '\n'; 
Query OK, 1 row affected (0.00 sec) 

mysql> 
[1]+ Stopped     mysql 
[[email protected] ~]# cat /tmp/test.csv 
cat: /tmp/test.csv: No such file or directory 

나는 실패의 경우에 MySQL의에서 다른 결과를보고해야 하는가?

"1 행 영향을받은 것"이상의 결과를 확인할 수 있습니까?

+0

select 문이 어떤 영향을 미칩니 까? – futureelite7

+0

아마도 select가 아닌 outfile 함수를 참조합니다. – Andy

답변

17

outfile 절에 의해 생성되는 파일은 mysql 서버 호스트에서 생성됩니다. mysql 서버 호스트가 아닌 클라이언트 호스트에있는 것처럼 보이기 때문에 mysql 서버 호스트를 찾고 있는지 확인하십시오.

관련 문서에 대해서는 outfile 절의 http://dev.mysql.com/doc/refman/5.0/en/select.html을 참조하십시오.

+0

감사 Dipin, 당신은 이것이 DB 서버가 맞지 않습니다. 많은 감사 – Andy

+0

문제 없습니다. 다행히 도울 수있어. 건배! – Dipin

+0

Dipin 방금 밤새 내 머리를 때린 다. 감사! – jerrygarciuh

0

파일 권한 문제가 발생하는 것 같습니다. mysqld가 실행중인 user : 그룹에 /tmp/test.csv에 쓸 수있는 권한이 있는지 확인하십시오.

문제를 해결할 수있는 다양한 서버 데몬/파일 권한 옵션이 있습니다. 아마 유닉스 기반이라면 다음과 같이 할 수있다 : chgrp mysqldGROUP/tmp

그러나 그렇게하면 서버가 특정 방식으로 구성되므로 쉽게 적응할 수있다. mysqld 프로세스는 실제로 소수의 장소에서만 읽기/쓰기가 가능해야한다.

10

나는이 문제를 Fedora 17에서 발견했으며 systemd로 인해 발생했습니다. 나는 그것을 나누는 것이 좋은 것이라고 생각한다.

mysql> select * into outfile '/tmp/z1' from t1; 
Query OK, 673 rows affected (0.01 sec) 
mysql> select * into outfile '/tmp/z2' from t1; 
Query OK, 673 rows affected (0.01 sec) 
mysql> select * into outfile '/tmp/z1' from t1; 
ERROR 1086 (HY000): File '/tmp/z1' already exists 
mysql> Bye 

# cat /tmp/z1 
cat: /tmp/z1: No such file or directory 
# ls -d systemd-* 
/tmp/systemd-private-AQEueG 
/tmp/systemd-private-AuCNDY 
/tmp/systemd-private-TOMNxZ 
/tmp/systemd-private-UacrpE 
/tmp/systemd-private-yal7lQ 
/tmp/systemd-private-ZlRJeN 
# ls /tmp/systemd-private-TOMNxZ 
z1 z2 

범인은 /usr/lib/systemd/system/mysqld.service했다. this blog

# Place temp files in a secure directory, not /tmp 
PrivateTmp=true 

덕분에, 나는 단서를 발견했다.

+0

공유 해 주셔서 감사합니다. – blissini

관련 문제