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

To jest komunikat o błędzie, który daje mi MySQL podczas próby zastosowania nowego indeksu do istniejącej (bardzo dużej) tabeli. Oczywiście kiedy sugestii komunikat o błędzie za próbując go naprawić:Jak odzyskać dane po "niepoprawnym pliku kluczy" za pomocą 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) 

Co jest moim najlepszym rozwiązaniem tutaj (po oczywistej pełną kopię zapasową przed majsterkowania)?

UPDATE: stworzyłem nową tabelę (MyISAM) tego samego schematu, kopiowane przez wszystkich rekordów (wstawić select), zmieniony silnik na nowej tabeli (InnoDB), przemianowany uszkodzony stół i przemianowany nową tabelę, a następnie spróbował ponownie i dostał ten sam błąd.

Odpowiedz

10

Wygląda jak stare pytanie, ale ja po prostu wpadł na ten problem. MySQL wypisał tymczasową tabelę na dysk i zapełniła partycję/tmp.

+0

Folder tmp ma limit zwykle 2 GB, spróbuj df -h, aby go zobaczyć. –

+0

To samo dla mnie ... niektóre nieudane zrzuty zapasów wypełniły przestrzeń/tmp. Miło przypomnieć tę odpowiedź. – smile2day

+0

Może być rozwiązaniem dla wielu osób, ale dla mnie nie działa. (Nasze/tmp wynosi tylko 3% w użyciu) – rinogo

0

Sugeruję utworzenie kopii zapasowej przed wypróbowaniem tego.

Wykonaj obojętne

ALTER TABLE widgets; 
+0

Dzięki. Niestety to nie zadziałało. –

0

Kiedy robimy Alter na innodb, należy zachować "tmpdir". Błąd 1034: Naprawianie klucza jest zdecydowanie spowodowane tym, że "tmpdir" jest pełny, a twoja zmiana rzuci ten błąd.

Proponuję więc, aby po włączeniu Altera dodać jeszcze jedno oko na wykorzystanie "tmpdir". Jeśli tmp używa 100%, na pewno widzisz ten błąd :).

Powiązane problemy