본문 바로가기
데이타베이스

Can't open file: '테이블이름.MYI'

by 세이박스 2008. 10. 10.
반응형
테이블에 이상이 생기면 나타난 대표적인 증상은 테이블을 확인했을때(desc 테이블이름) 나오는 에러메시지의 내용은 다음과 같다.

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



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

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
반응형