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

Đây là thông báo lỗi mà MySQL cung cấp cho tôi khi cố gắng áp dụng chỉ mục mới cho bảng hiện có (rất lớn). Tất nhiên khi tôi thực hiện theo đề xuất của thông báo lỗi về việc cố gắng sửa chữa nó:Làm cách nào để bạn khôi phục từ "tệp khóa không chính xác" với 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) 

Hành động tốt nhất của tôi ở đây (sau sao lưu đầy đủ rõ ràng trước khi mày mò) là gì?

UPDATE: Tôi tạo ra một bảng mới (MyISAM) của giản đồ cùng, sao chép tất cả các hồ sơ (chèn vào chọn), các thay đổi động cơ trên bảng mới (InnoDB), đổi tên bảng tham nhũng và đổi tên thành bảng mới, sau đó thử lại và gặp lỗi tương tự.

Trả lời

10

Hình như một câu hỏi cũ, nhưng tôi chỉ chạy vào vấn đề này. MySQL đã viết một bảng tạm thời vào đĩa và phân vùng/tmp được lấp đầy.

+0

thư mục tmp có giới hạn thường là 2GB, hãy thử df -h để xem nó –

+0

Tương tự đối với tôi ... một số bãi sao lưu không thành công lấp đầy không gian/tmp. Nice lời nhắc này câu trả lời – smile2day

+0

Có thể là giải pháp cho nhiều người, nhưng đã không làm việc cho tôi. (/ Tmp của chúng tôi chỉ sử dụng 3%) – rinogo

0

Tôi đặc biệt khuyên bạn nên sao lưu trước khi thử số này.

Thực hiện một hình nộm

ALTER TABLE widgets; 
+0

Cảm ơn. Thật không may là nó không hoạt động. –

0

Khi chúng tôi đang thực hiện thay đổi trên innodb, "tmpdir" cần được quan sát. Lỗi 1034: Sửa chữa khóa chắc chắn là do "tmpdir" đầy, và thay đổi của bạn sẽ ném lỗi này.

Vì vậy, tôi đề nghị khi Alter được kích hoạt, hãy chú ý đến việc sử dụng "tmpdir" của bạn. Nếu tmp đang sử dụng 100% ở đó bạn có thể thấy lỗi này chắc chắn :).

Các vấn đề liên quan