2016-09-03 11 views
1

私は、wp_postsテーブルを持っていたクライアントのためのデータベースを監督しています。私はphpMyAdminにを使用してテーブルにアクセスしようとすると、私は次のメッセージが出ます:データベーステーブルが破損しているのはなぜですか?

を表wp_postsがクラッシュしたとしてマークされていて、修復されなければなりません。

これがどうなったのか、それを防止するために何ができるかについては何の示唆もありません。私は8年間開発者でしたが、これまで経験したことがないので、私は迷っています。誰もこの問題を経験していますが、それが再び起こる前にどのように対処できますか?

答えて

3

エラーメッセージには、どのように発生したのかわかりません。それは、ディスクの欠陥、不完全な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を使用する利点はありません。

+0

詳細な説明をありがとう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

+1

MySQLのデータディレクトリが限られた権限を持っていることは珍しいことではありません。デフォルトでは、ディレクトリはユーザのmysqlやrootにアクセスできます。 –

+0

'wp_posts'テーブルが'使用中 'になっている場合、そのテーブルを修復する方法はありませんか? – zeckdude

関連する問題