본문 바로가기
DataBase/MySQL

[본문스크랩] 에러 유형과 그 대처

by 백룡화검 2010. 4. 24.

테이블에 이상이 생기면 나타나는 대표적인 증상과 테이블을 확인했을 때 (desc 테이블 이름) 나오는 에러 메시지의 내용은 다음과 같다.

 

ERROR 1016: Can't open file: '테이블이름.MYI'. (errno: 145)

 

이런 메시지를 처음 접했을때 취할 행동은 repair table 을 실행할 수 있는 계정 (root)으로 접속하여 복구해본다.

 

mysql> repair table 테이블이름

 

이렇게 복구가 된다면 좋겠지만 이래도 복구가 안된다면.. myisamchk 를 이용한다.

myisamchk 는 테이블의 정의와 데이터, 인덱스를 저장하는 .frm, .MYI, .MYD 파일 자체를 검사하는 프로그램이다. 따라서 MySQL 서버가 테이블에 쓰기 (UPDATE, INSERT) 를 하는 것은 이러한 파일에 쓰기를 하는 것을 의미하므로 MySQL 서버가 실행중일때 myisamchk 를 실행하는 것은 바람직하지 않다.

myisqmchk를 사용할때는 MySQL 서버를 종료하거나 LOCK TABLE 을 이용하여 테이블을 잠그는 것이 좋다.

 

★ 테이블 확인

mysql> desc returnmail40; (returnmail40 은 테이블 이름)

ERROR 1016: Can't open file : \returnmail40.MYD\. (errno: 145)

 

★ 에러코드 확인

\mysql\bin\perror 145

Error code 145: Unknown error

145 = Table was marked as crashed and should be repaired

 

★ 기본 오류 검사

\mysql\data\ReturnMail\myisamchk --extend-check returnmail40

myisamchk: error: File \returnmail40;\doesn't exist

 

★ 세부 오류 검사

\mysql\data\ReturnMail\myisamchk --extend-check returnmail40

myisamchk: error: File \returnmail40;\ doesn't exist

 

★ 인덱스 복구 시도

\mysql\bin\myisamchk --recover --quick returnmail40

myisamchk: error: File \returnmail40;\doesn't exist

 

★ 데이터포함 복구 시도

\mysql\bin\myisamchk --recover returnmail40

myisamchk: error: File \returnmail40;\ doesn't exist

 

★ 완전 복구 시도

\mysql\bin\myisamchk --safe-recover returnmail40

myisamchk: error: File \returnmail40;\ doesn't exist