私は想像してみましょう。あなたは停電していました。バックアップが復帰したとき、MySQLはいくつかのテーブルのインデックスが破損していると不平を言いましたか?そのテーブルはMyISAMでしたか?
myisamchk
を使用してテーブルを修復します。
- http://mysql.rjweb.org/doc.php/myisam2innodbのgotchasを調べて、InnoDBへの変換が新たな不具合を追加するかどうかを確認してください。おそらく何もないでしょう。 2つの部分からなる
PRIMARY KEY
は、InnoDBで実装されていない唯一のものです。また、MySQLのバージョンが古すぎる場合、InnoDBにはまだFULLTEXT
のインデックスがないかもしれません(必要な場合)。
- my.cnf:
key_buffer_size = 20M
とinnodb_buffer_pool_size
をの約半分と同じに変更してください。メモリ。
ALTER TABLE xx ENGINE=InnoDB;
各テーブルxx
。
私は、それぞれの更新/削除/挿入がテーブルに壊れている可能性があるとマークすると思いますが(確かではありません)変更を書きますが、マークはクリアされません。 mysqldがきれいにシャットダウンすると、すべてがディスクにフラッシュされ、これらのフラグはクリアされます。 mysqldが復帰すると、クリアされなかったフラグが返されます。したがって...
インデックスが破損しているかどうかは、そのインデックスを変更してクラッシュしたかどうかによってのみ異なります。 (すべてのテーブルにはいくつかのインデックスがありますか?)
通常、MySQLはクラッシュする前にディスクへの変更をフラッシュします。索引が実際に破損する時期にクラッシュが起こるのはたまにしかありません。修復にはフラグをクリアする「クイック」モードがあります。これを試すことができます。しかし、レコードが存在することを知ったときに不思議な "レコードを見つけることができません"というメッセージが表示された場合は、REPAIR
が良いでしょう。
この質問は、PHPとは全く関係がありません。なぜタグを付けましたか?また、全体的な質問はデータベース管理に関するものです。**は**コーディングではありません。 –
私はphpbbがPHPに関連していると思った –
はい。あなたの**質問**はありません。あなたが書いたコードで何かを尋ねてきたのであれば、それを使う方法を尋ねるだけではないでしょう。 –