MySQLテーブルはクラッシュしているとマークされ、最後の(自動?)修復は失敗しました


126

私は突然このテーブルを修復していましたが、サーバーがハングし、戻ったときにすべてのテーブルは正常ですが、このテーブルは「使用中」を示し、修復しようとしても続行しません。

エラー144-テーブル './extas_d47727/xzclf_ads'はクラッシュしているとマークされ、最後の(自動?)修復に失敗しました

どうすれば修理できますか?


1
これは主に、基盤となるファイルシステムが空きiノードからなくなると発生することを見てきました。df -hiで確認してください。通常、何かが、クリーンアップされないphpセッションファイルなどの小さなファイルのロードでいっぱいになります。
Zrin、2014年

回答:


260

MySQLプロセスが実行中の場合は、停止します。Debianの場合:

sudo service mysql stop

データフォルダに移動します。Debianの場合:

cd /var/lib/mysql/$DATABASE_NAME

実行してみてください:

myisamchk -r $TABLE_NAME

それでもうまくいかない場合は、以下をお試しください。

myisamchk -r -v -f $TABLE_NAME

MySQLサーバーを再起動できます。Debianの場合:

sudo service mysql start

3
上記のコマンドを試しましたが、このエラーが発生しました新しい一時ファイルを作成できません: 'xzclf_ads.TMD'
CryptoMiningPoolSetupYiimp

2
さて、ディスクは本当にいっぱいですか?「df -h」を実行してみてください。最も可能性が高く、スペースを解放する必要があります...テーブルの修復中、一時テーブルへの書き込みにディスクスペースを使用します。エラーメッセージからわかるように、/ tmp /フォルダーに書き込みます
Aleksandar 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>;

私は同じ問題を抱えていて、それで問題が解決しました。


これは簡単な修正でした!「悪い」オプション表がありました。最初に正しいデータベースを選択していることを確認してください!
ジルスチュアート

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_dirYour_table.TMPファイルに移動して削除します<Your_table>


どこdata_dirですか
CMCDragonkai、2015年

1
このコマンドで検索してくださいgrep -r datadir /etc/mysql//var/lib/mysqldebianおよびubuntuの下にある必要があります。
ThorstenS 2016

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.