2013-06-25

안갈거 같았던 시간이 흘러서 벌써 6월말.
이번주 주말이면 지난 반년이 넘도록 작업한 프로젝트의 오픈.

잘 마무리되고 새로운 마음으로 새출발을 해야지.

mysql table이 깨졌을때 복구..

mysql을 써보긴 했어도 테이블이 깨진적은 없었는데………
물론 이번에도 내가 쓰는데서 문제가 된건 아니고.. 아는 동생이 물어봐서…검색을 해봤는데….아래와 같은 방법으로 해결이 가능하다고 하는데……..
막상 해보니 repair 명령을 실행하면….syntax가 올바르지 않는다는 헛소리만 지껄이고…
결국 myisamchk로 해결…..결론은 아래와 같이…..;;;;

%mysql inst dir%bin/myisamchk -r %mysql data path%/table_name

 

[출처] [MySQL Error]Table ‘problem_table’ is marked as crashed and should be repaired.|작성자 NaNNa

### 오류 메세지 ###
General SQL error.
[MySQL][ODBC 3.51 Driver][mysqld-5.0.21-community-nt]Table ‘problem_table’ is marked as crashed and should be repaired.

 

### 원 인 ###
테이블이 손상되는 증상은 아래와 같은 예기치 않는 문제로 인하여 발생됩니다.
– tbl_name.frm변경에 대한 락이 걸린 경우
– tbl_name.MYI(Errcode: nnn) 파일을 찾을 수 없는 경우
– 예상치 못한 파일 종료
– 저장 파일의 충돌
– table handler로 부터 오류 nnn을 받았을 때

자세한 내용은 MySQL 5.1 Reference Manual > 6.6.3 How to Repair MyISAM Tables 를 참조바랍니다.

 

### 해결 방법 ###
1. MySQL Query Browser 를 이용하여
1) 시작>프로그램>MySQL>MySQL Query Browser를 실행합니다.

2) MySQL Query Brower 로그인 화면에서 패스워드를 입력하고
로그인합니다.

3) MySQL Brower 메뉴의
“File>New Script Tab”을 실행하여
다음을 입력

analyze table problem_table;//해당 테이블의 보고서 작성
repair table problem_table;//해당 테이블의 복원 명령

 

4) MySQL Query Brower 오른쪽 상단의 “Execute” 버튼을 클릭합니다.

 

2. MySQL Command Line Client를 이용하여
1) 시작>프로그램>MySQL>MySQL Sever>MySQL Command Line Client를 실행합니다.

2) 패스워드를 입력하여 MySQL Command Line을 실행

3) mysql>use db명;//해당 데이터베이스 선택
mysql>analyze table problem_table;//해당 테이블의 보고서 작성
mysql>repair table problem_table;//해당 테이블의 복원 명령

 

위와 같은 방법으로 해결이 되지 않는 다면
MySQL 데이터베이스 서비스를 중지시키고
C:\Program Files\MySQL\MySQL Server\bin 폴더의 myisamchk.exe 실행 파일을 이용하여
myisamchk -r problem_table; 명령으로 복구 시도하시기 바랍니다.