2013-06-04 28 views
13

Nếu các bảng bị lỗi có nghĩa là đã xảy ra sự cố với hệ thống của tôi.MySQL cho biết: # 1194 - Bảng 'tablename' được đánh dấu là bị lỗi và cần được sửa chữa

MySQL said: 

#1194 - Table 'tablename' is marked as crashed and should be repaired 

Trang web của tôi hiện không hoạt động.

Tôi biết cách sửa bảng từ phpmyadmin nhưng có cách nào an toàn để sửa chữa không?

Yếu tố quan trọng cho vấn đề này là gì?

Câu hỏi. Nói chung, Tại sao bảng bị rơi?

Câu trả lời. Đây có thể là lý do -

  1. Không gian đĩa của máy chủ đã đầy. (Vui lòng kiểm tra dung lượng ổ đĩa trong máy chủ trực tiếp)

  2. Tắt máy chủ MySQL không đúng cách/Đóng các bảng không đúng cách trong khi sử dụng cơ sở dữ liệu.

  3. Tải máy chủ khác.

+0

bạn có thể đăng truy vấn không? – Stephan

+0

điều này có thể hữu ích http://www.mysqlperformanceblog.com/2007/11/13/10-ways-to-crash-or-overload-mysql/ – 6339

+0

"* Nói chung, Tại sao bảng bị lỗi? *" Vì đó là MyISAM. .. Nó có danh tiếng vì không an toàn. –

Trả lời

19

Trước hết - có nhiều lý do cho bảng bị lỗi.

  • thất bại ổ cứng
  • đột ngột máy chủ khởi động lại
  • vụ tai nạn máy chủ
  • vấn đề firmware (điều khiển cuộc tấn hoặc bios)
  • khiếm khuyết trong hệ thống cáp
  • , vv

Một sửa chữa với phpmyadmin về cơ bản giống như dòng lệnh mysqlrepair. Tôi sẽ đề nghị để sửa chữa mọi thứ trên dòng lệnh:

mysqlrepair -A --auto-repair 
mysqlrepair -A -o 

Hoặc bắt đầu một thử nghiệm:

mysqlrepair -A -c 
+2

Nó nói mysqlrepair không được cài đặt. Đây có phải là giống như chạy mysqlcheck -uUSER -pPASSWORD --repair --extended -A –

4

Có bạn có thể sửa bảng từ phpmyadmin, nó sẽ không ảnh hưởng đến dữ liệu của bạn và bạn cũng có thể sửa bảng từ trình bao bằng lệnh 'myisamchk'.

1

tôi sử dụng điều này từ dòng lệnh:

mysqlcheck -u root -p --auto-repair --check --optimize --all-databases 
+1

Nó cho: "Lỗi: mysqlcheck không hỗ trợ nhiều lệnh mâu thuẫn." – asdf

1

Sử dụng:

mysqlcheck -u root -p --auto-repair --check --all-databases 
(Password prompted) 

Nhập mật khẩu MySQL cho root của người dùng và mọi thứ đã xong.

11

Nếu bạn không có các công cụ dòng lệnh cần thiết, và lý do cho vụ tai nạn là rất có thể là MYSQL chính nó, chạy từ MYSQL để sửa chữa một bảng:

REPAIR TABLE db_name.table_name; 
0

Nếu bạn có quyền truy cập ssh vào máy chủ bạn có thể đăng nhập và sau đó thực hiện:

df -h 

và bạn có thể nhìn thấy một cái gì đó như thế này:

Filesystem   Size Used Avail Use% Mounted on 
/dev/cciss/xxxx  19G 825M 18G 5%/
/dev/cciss/xxxx  9.4G 4.8G 4.2G 54% /usr 
/dev/cciss/xxxx  15G 1.8G 12G 13% /var 
/dev/cciss/xxxx  19G 18G 0G 0% /opt 
/dev/cciss/xxxx  4.7G 243M 4.3G 6% /tmp 
/dev/cciss/xxxx  9.4G 1.5G 7.5G 17% /home 

Nó ĐÈN cài đặt trên /opt, sau khi một số không gian đĩa miễn phí, bạn có thể chạy các truy vấn (như trên đã viết):

Repair table db.mytablecrashed 

Và bạn nhận được trong hàng cuối cùng:

Table    OP  Msg_type Msg_text 
... 
db.mytablecrashed repair status OK 
1

Giải pháp:

Chỉ cần vào cơ sở dữ liệu và chọn bảng trong đó có vấn đề và chọn "bảng sửa chữa" tùy chọn nó sẽ sửa các mục nhập sự cố trong bảng và giải quyết sự cố của bạn

enter image description here

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