2009-06-22 4 views
5
Incorrect key file for table 'widgets'; try to repair it 

기존의 (매우 큰) 테이블에 새 인덱스를 적용하려고 시도 할 때 MySQL이 제공하는 오류 메시지입니다. 물론 나는 그것을 복구하려고의 오류 메시지의 제안을 따를 때 :MySQL (InnoDB)에서 "잘못된 키 파일"을 어떻게 복구합니까?

mysql> repair table widgets; 
+-------------------+--------+----------+---------------------------------------------------------+ 
| Table    | Op  | Msg_type | Msg_text            | 
+-------------------+--------+----------+---------------------------------------------------------+ 
| tedsdb.widgets | repair | note  | The storage engine for the table doesn't support repair | 
+-------------------+--------+----------+---------------------------------------------------------+ 
1 row in set (0.00 sec) 

행동의 내 최선 여기에 무엇을 (땜질 전에 명백한 전체 백업을 다음)? UPDATE

:는 나는이 새 테이블 (이노)에 엔진을 변경 손상된 테이블의 이름을 변경하고 이름을 바꾼 모든 레코드 (선택에 삽입) 복사 같은 스키마의 새 테이블 (의 MyISAM)를 생성 새 테이블을 다시 시도하고 같은 오류가 발생했습니다.

답변

10

이 오래된 질문 같은데 수행하지만, 난 그냥이 문제에 달렸다. MySQL은 디스크에 임시 테이블을 쓰고/tmp 파티션을 채웠다.

+0

tmp 폴더에는 일반적으로 2GB의 제한이 있습니다. df -h로 확인하십시오. –

+0

동일합니다 ... 일부 실패한 백업 덤프가/tmp 공간을 채 웁니다. 좋은 알림이 대답 – smile2day

+0

많은 사람들을위한 해결책 일지 모르지만 나를 위해 일하지 못했습니다. (우리/tmp는 3 % 만 사용 중입니다) – rinogo

0

시도하기 전에 백업하는 것이 좋습니다..

는 더미

ALTER TABLE widgets; 
+0

감사합니다. 불행히도 그것은 작동하지 않았다. –

0

우리가 innodb를 변경할 때 "tmpdir"을 관찰 할 필요가 있습니다. 오류 1034 : 키 복구는 "tmpdir"이 가득차 있기 때문에 발생하며 alter가이 오류를 발생시킵니다.

그래서 Alter가 트리거되면 "tmpdir"사용률에 대해 한 번 더주의해야합니다. tmp가 100 % 사용 중이라면이 오류를 확인할 수 있습니다 :).

관련 문제