2013년 1월 17일 목요일

MySQL / LOAD DATA INFILE 실행 시 ERROR 13

구분자로 구분되어 있는 텍스트 파일에서 데이터를 빠르게 올리기 위하여 LOAD DATA INFILE 구문을 사용한다. 예전에 Sybase ASIQ에서도 비슷한 걸 사용한 적이 있는데 INSERT 문을 건건이 사용하는 것보다 비교가 안 될 만큼 빨랐다. MySQL도 마찬가지다. 그런데 다음과 같은 오류가 날 때가 있다.
ERROR 13 (HY0000): Can't get stat of '/home/~' (Errcode: 13)
파일('/home/~')의 stat(상태? 통계? 뭘까?)을 얻을(get) 수 없다니... 이 메시지만 봐서는 무슨 오류인지 알 수가 없다.
알고 보니, 지정한 파일을 읽을 수 없는 경우에 나타나는 오류 메시지이다. 그리고 읽을 수 없는 경우는 다음과 같은 것들이 있다.
  • Others에 읽기 권한이 없는 경우.
  • Others가 파일경로 내의 디렉토리에 접근할 수 없는 경우.
  • 지정한 파일이 MySQL 서버 내에 없는 경우.
  • "LOAD DATA INFILE ~" 구문을 실행 권한이 없는 경우.
위와 같은 문제들을 해결하면 아주 잘~ 된다.
마지막 문제는 mysql 쿼리 환경에서
mysql> show variables like 'local%';
문장을 실행하여 나오는 값 중 local_infile이 ON이어야 한다. 만약, ON이 아니라면 mysql을 실행할 때 다음과 같이 "-local-infile=1"옵션을 주면 된다.
$ mysql -h 'host' -u 'userName' -p -local-infile=1
끝!
저작자: Yes, 상업적 이용: No, 컨텐츠 변경: No

댓글 없음:

댓글 쓰기