エラーメッセージには、どのように発生したのかわかりません。それは、ディスクの欠陥、不完全なI/O書き込み、MySQLコードのバグ、または誰かがファイルを開いてエディタでそれにひっくり返っている可能性があります。
これを修正するには、myisamchk
テーブル修復ツール(MySQLに付属)を使用する方法があります。このツールの使用方法は次のとおりです。https://dev.mysql.com/doc/refman/5.7/en/myisam-repair.html
これを防ぐには何ができますか? MyISAMストレージエンジンの使用を中止してください。
MyISAMは以前は一層安定した高性能であると考えられていましたが、それは10年以上前です。 InnoDBはそれ以来、すべてのエンジニアリングの改良を受けており、MyISAMよりもパフォーマンスが大幅に向上しており、自己修復の点ではるかに安全です。 MySQLの各リリースで、MyISAMは徐々に廃止されています。あなたは、あなたのデータベースのテーブルごとに、一度にこれをしなければならない
ALTER TABLE wp_posts ENGINE=InnoDB;
:ストレージエンジンを変更
は同じくらい簡単です。しかし、あなたが実行するコマンドのセットを生成することができます。
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS _sql
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = DATABASE() AND table_type = 'BASE TABLE';
は、そのクエリの出力をキャプチャし、SQLスクリプトとしてのステートメントを実行します。 99%のケースでは、現在のバージョンのMySQLを使用している場合(たとえば、5.5ブランチ以降のGAリリース)、MyISAMを使用する利点はありません。
詳細な説明をありがとうBill! mysiamchkツールを実行しようとすると、新しい一時ファイルを作成できないというメッセージが表示されます。私は 'wp_posts'がそれが使用中であると言っていることに気付きました。私はこの記事(https://portal.my-tss.com/knowledgebase/254/MySQL-Table-says-IN-USE-but-table-will-not-repair-in-phpmyadmin.html)を見つけました。その問題を回避するには、私のDBのフォルダにSSHしようとすると、Permission deniedと表示されます。私のホスティングプロバイダの技術サポートは、なぜそのフォルダに 'cd 'する権限がないのか分かりません。何か案は? – zeckdude
MySQLのデータディレクトリが限られた権限を持っていることは珍しいことではありません。デフォルトでは、ディレクトリはユーザのmysqlやrootにアクセスできます。 –
'wp_posts'テーブルが'使用中 'になっている場合、そのテーブルを修復する方法はありませんか? – zeckdude