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

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

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

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



답변

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


답변

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

repair table <table_name>;

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


답변

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

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


답변

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

REPAIR TABLE <table_name> USE_FRM;


답변

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

해결책

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


답변

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


답변

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

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