MySQL 테이블이 충돌 된 것으로 표시되고 마지막 (자동?) 복구 실패


126

이 테이블을 갑자기 수리하고 있었는데 서버가 멈추고 돌아 왔을 때 모든 테이블이 정상이지만이 테이블은 '사용 중'을 표시하고 수리하려고 할 때 진행되지 않습니다.

오류 144-테이블 './extas_d47727/xzclf_ads'가 충돌 한 것으로 표시되고 마지막 (자동?) 복구가 실패했습니다.

수리하려면 어떻게해야합니까?


1
기본 파일 시스템이 무료 inode에서 벗어날 때 주로 발생하는 것을 보았습니다. df -hi로 확인하십시오. 일반적으로 정리되지 않는 PHP 세션 파일과 같이 작은 파일로 가득 차 있습니다.
Zrin 2014-10-21

답변:


260

MySQL 프로세스가 실행중인 경우 중지하십시오. 데비안 :

sudo service mysql stop

데이터 폴더로 이동하십시오. 데비안 :

cd /var/lib/mysql/$DATABASE_NAME

다음을 실행 해보십시오.

myisamchk -r $TABLE_NAME

그래도 작동하지 않으면 다음을 시도해보세요.

myisamchk -r -v -f $TABLE_NAME

MySQL 서버를 다시 시작할 수 있습니다. 데비안 :

sudo service mysql start

3
'xzclf_ads.TMD를'나는 새 임시 파일을 만들 수 없습니다이 오류가 위의 명령 시도
CryptoMiningPoolSetupYiimp

2
음, 디스크가 정말 꽉 찼습니까? "df -h"를 실행 해 볼 수 있습니까? 대부분의 경우 공간을 확보해야합니다. 테이블을 복구하는 동안 디스크 공간을 사용하여 임시 테이블에 기록합니다. 오류 메시지에서 볼 수 있듯이 그것은 당신의 / tmp 디렉토리 / 폴더에 기록
알렉산다르 Vucetic

13
로 이동하여 /var/lib/mysql/<database>실행해야했습니다 myisamchk -r -v -f ./<table name>.
Linus Oleander 2013 년

5
내가있어 myisam_sort_buffer_size is too small이 명령은 나를 위해 일한 있도록, 오류 :myisamchk -r -v --sort_buffer_size=2G <table_name>
두산

1
와, 내 웹 사이트 전체가 망가진 줄 알았는데. 그런 간단한 수정. 너는 나의 영웅이야!
안토니

105

다음 쿼리를 실행 해보십시오.

repair table <table_name>;

나는 같은 문제가 있었고 그것은 나에게 문제를 해결했습니다.


이것은 빠른 수정이었습니다! "나쁜"옵션 테이블이있었습니다. 먼저 올바른 데이터베이스를 선택했는지 확인하십시오!
jyllstuart

12

/ var / lib / mysql로 ​​이동하는 동안 권한 거부가 발생하면 다음 솔루션을 사용하십시오.

$ cd /var/lib/
$ sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME>

4

나는 그것이 작동하도록 수리 문에 USE_FRM을 추가해야했습니다.

REPAIR TABLE <table_name> USE_FRM;

3

나는 myisamchk: error: myisam_sort_buffer_size is too small오류로 얻었다 .

해결책

myisamchk -r -v mysql/<DB_NAME>/<TABLE_NAME> --sort_buffer_size=2G

2

테이블 복구 후 파일로 이동하여 data_dir제거하십시오 .Your_table.TMP<Your_table>


어디 data_dir있어요?
CMCDragonkai

1
이 명령으로 검색하십시오 grep -r datadir /etc/mysql/. /var/lib/mysql데비안과 우분투에 있어야합니다 .
ThorstenS

1

이것은 100 % 해결책입니다. 나는 그것을 직접 시도했다.

myisamchk -r -v -f --sort_buffer_size = 128M --key_buffer_size = 128M / var / lib / mysql / databasename / tabloname


0

나는 기존 답변의 옵션, 주로 내 시나리오에서 작동하지 않는 올바른 것으로 표시된 옵션을 시도했습니다. 그러나 작동 한 것은 phpMyAdmin을 사용하는 것입니다. 데이터베이스를 선택한 다음 테이블을 선택하고 하단 드롭 다운 메뉴에서 "테이블 복구"를 선택합니다.

  • 서버 유형 : MySQL
  • 서버 버전 : 5.7.23-MySQL Community Server (GPL)
  • phpMyAdmin : 버전 정보 : 4.7.7
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.