MyISAM 테이블 형식이 매우 안정적이더라도(SQL 문에 의해 테이블에 적용된 모든 변경 사항은 명령문이 반환되기 전에 기록됩니다) 다음 이벤트 중 하나가 발생하면 테이블이 손상될 수 있습니다.
· mysqld 프로세스가 종료됩니다
.글을 쓰는 중간.
· 예기치 않은 컴퓨터 종료가 발생했습니다(예: 컴퓨터 종료).
· 하드웨어 오류.
· 동시에 서버에 의해 수정되는 테이블에 외부 프로그램(예: myisamchk)을 사용할 수 있습니다.
· MySQL 또는 MyISAM 코드의 소프트웨어 결함.
손상된 테이블의 일반적인 증상은 다음과 같습니다.
· 테이블에서 데이터를 선택할 때 다음 오류가 발생합니다.
· 테이블에 대한 잘못된 키 파일: '...'을 복구해 보십시오.
· 쿼리가 테이블에서 행을 찾을 수 없습니다. 불완전한 데이터를 반환합니다.
CHECK TABLE 문을 사용하여 MyISAM 테이블의 상태를 확인하고 REPAIR TABLE을 사용하여 손상된 MyISAM 테이블을 복구할 수 있습니다. mysqld가 실행되지 않을 때 myisamchk 명령을 사용하여 테이블을 확인하거나 복구할 수도 있습니다.
테이블이 자주 손상되는 경우 이러한 현상이 발생하는 이유를 파악해야 합니다. 이해해야 할 가장 중요한 것은 서버 충돌로 인해 테이블이 손상되었는지 여부입니다. 가장 최근에 다시 시작된 mysqld 메시지에 대한 오류 로그를 살펴보면 이를 조기에 확인할 수 있습니다. 이러한 메시지가 존재하는 경우 테이블 손상은 서버 중단으로 인한 것일 가능성이 높습니다. 그렇지 않으면 정상 작동 중에 손상이 발생할 수 있습니다. 이것은 결함입니다. 이 문제를 보여주는 재현 가능한 테스트 케이스를 작성해야 합니다.