私のブログは3つに分けていて、このブログがメインなのだが、ネット株の記録用にしているブログがかなり長期間放置状態にあった。コメントスパムとか掃除しないといけないなと思いつつ放置していたので、昨日覚悟を決めて掃除&対策することにした。
コメントの数を見て唖然とした。なんと7,500以上もあったのだ。まともなコメントは殆ど無いからこれを掃除(削除)しなくてはならない。さてどうしたものかとMTの管理ページでコメントを125ずつ表示させてからすべて選択>削除と、チマチマとした手順を繰り返していたのだが、途中でやってられないと思った。試しに全て表示させてみるか。(MTは表示数を選択する事が出来る)
ところが、全てを表示させてしまったら流石にブラウザがハングアップしてしまい何も出来なくなった。そりゃ7500もの行を表示させたら、Perlも滅茶苦茶重いだろうし、ハングアップするわな。何か良い方法はないかと考えた末、禁断のSQLを直接操作することにチャレンジしてみた。もちろんSQL文は分からないのでphpMyAdminを使う。
とりあえずはテーブル構造を把握しとかないといけないなと、一つずつテーブルを表示させてみたところ、mt_commentsというテーブルに膨大なレコードが記録されていることが分かった。そしてそれらの多くはMTに標準装備の迷惑メール診断で振り分けられていて、診断の値(スコア)が記録されている。正常な投稿には正の数字が、スパムと診断された投稿には負の数字がついている。という訳でスコアを0よりも小さいレコードを抽出した。ここまではphpMyAdmin最高だと思っていた。
さて抽出した迷惑投稿のレコードを削除するのはどうすればよいのかな?と色々試していてうっかりXをクリックしてしまった。SQL文でDROPという文字が出てきたので、こりゃまずいと思ってキャンセルをクリックするつもりでマウスを操作したら、間違えて「実行」をクリックしてしまったのだ!
一瞬凍りついた感覚がしたがもう戻せない。SQLの操作は非常に怖いと改めて思った。アンドゥは出来ないのだ。パソコンでは常識のアンドゥが出来ない。一瞬のミスでmt_commentsというテーブルが消え去った。
もう失ったデータは復旧できないから、新たにMT3系をテスト環境に構築し、テーブルを自動生成させてそのテーブルを現行のデータベースにコピーしてとりあえず入れ物は作った。コメントのテストを恐る恐る行ったがなんとか機能するようだ。
しかし、3つのブログの4年分のコメントが全て消えたのは参った。これからはSQLをいじるときは、事前にバックアップを取っておく事を肝に銘じようと思った。でもやっぱりSQLいじるの怖いな。


コメント