강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

MySQL강좌14편: MYSQL의 에러원인 확인을 위한 perror 실무활용

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

MySQL강좌14: MYSQL의 에러원인 확인을 위한 perror 실무활용

 

 

perror은 시스템의 에러메시지의 내용을 출력해주는 명령어이다.  주로 MYSQL의 에러메시지 내용을 확인하는 용도로 많이 사용된다.  MYSQL사용중 발생하는 에러 또는 php프로그래밍을 할 때에 MYSQL관련 에러메시지를 만나면 에러번호를 표시하게 된다. 이때 이 에러번호가 의미하는 내용을 확인하기 위하여 사용하는 MYSQL명령어가 perror이다. 즉 쉽게 말해서 MYSQL perror명령어는 MYSQL에서 발생하는 에러코드에 대한 원인을 확인하는 것이다.  즉 리눅스 서버의 MYSQL 데이터베이스를 관리하다 보면 에러와 함께 에러코드번호를 만나는 경우가 종종있다. MYSQL은 에러가 발생하면 에러코드번호를 리턴해주게 된다. 따라서 에러의 정확한 원인분석을 위하여 에러코드번호가 어떤 에러를 의미하는가를 확인하는 용도로 perror을 사용한다. 

 

사용형식   : perror [옵션] [에러코드]

 

만약 여러분이 RPM으로 설치된 MySQL을 설치하여 사용한다면 /usr/sbin/이나 /usr/bin/에 이들 명령어가 위치하고 있을 것이다. 가장 간단한 예로서 다음과 같이 옵션과 에러코드를 지정하지않고 그냥 ./perror이라고만 하면 perror의 사용방법을 보여준다.

 

[root@sulinux bin]#ls -l /usr/local/mysql/bin/perror

-rwxr-xr-x 1 root root 1035002  4 15  2011 /usr/local/mysql/bin/perror

[root@sulinux bin]#

[root@sulinux bin]#./perror

./perror Ver 2.11, for pc-linux-gnu (i686)

This software comes with ABSOLUTELY NO WARRANTY. This is free software,

and you are welcome to modify and redistribute it under the GPL license

 

Print a description for a system error code or an error code from

a MyISAM/ISAM/BDB table handler.

If you want to get the error for a negative error code, you should use

-- before the first error code to tell perror that there was no more options.

 

Usage: ./perror [OPTIONS] [ERRORCODE [ERRORCODE...]]

  -?, --help          Displays this help and exits.

  -I, --info          Synonym for --help.

  -s, --silent        Only print the error message.

  -v, --verbose       Print error code and message (default).

  -V, --version       Displays version information and exits.

 

Variables (--variable-name=value)

and boolean options {FALSE|TRUE}  Value (after reading options)

--------------------------------- -----------------------------

verbose                           TRUE

[root@sulinux bin]#

 

 

일반적인 MYSQL의 에러원인 확인 방법

 

아래의 예는 MYSQL의 에러번호가 20인 경우와 23번인 경우의 에러원인을 각각 확인한 예이다.

 

[root@sulinux bin]#./perror 20

OS error code  20:  Not a directory

[root@sulinux bin]#

[root@sulinux bin]#./perror 23

OS error code  23:  Too many open files in system

[root@sulinux bin]#

 

즉 위의 예에서 MYSQL의 에러코드 20번은 “Not a directory”라는 의미로서 디렉토리를 오픈하려고 하였으나 디렉토리가 아닌 경우에 발생한 에러라는 것을 짐작할 수 있다.

 

그리고 MYSQL의 에러코드 23번은 “Too many open files in system”라는 원인으로서 현재 리눅스 서버에서 오픈가능한 파일의 개수가 허용가능한 개수보다 초과하여 발생한 원인이라는 것을 알 수 있다.

 

 

MYSQL의 에러원인의 자세한 옵션사용(사용권장옵션)

 

MYSQL의 에러를 확인하기 위하여 perror 사용시에 -v 옵션을 사용하면 보다 자세한 에러원인을 알려준다. 솔직히 기대할 정도는 못되지만 -v옵션을 사용하지 않은 것보다는 더욱 자세한 에러정보를 확인할 수 있으므로 사용할 것을 권한다.  아래의 예는 MYSQL의 에러코드 101번에 대한 에러원인을 확인하기위하여 “./perror -v 101”을 실행한 것이다.

 

[root@sulinux bin]#./perror -v 101

OS error code 101:  Network is unreachable

[root@sulinux bin]#

 

위의 결과로 보아 MYSQL 101에러는 네트워크 통신이 되지않았기 때문에 발생한 에러라는 것을 짐작할 수 있다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,157 명
  • 현재 강좌수 :  36,515 개
  • 현재 접속자 :  232 명