45式::雑記
45式::雑記は、日々の事を記してないから日記ではなく雑記です。

データベースからブログの痕跡を削除する方法

コメント
0件
トラックバック
0件

前置き

ちょっとした手違いでブログを複製してしまった。
(そんな手違いがあるか、と言われても本当に手違いだった)
けれど、MTブログを複製する前の状態に戻す事は想像した以上に簡単だった。

そこで、その方法をデータベースからブログの痕跡を削除する方法を中心に紹介します。

この方法は、管理画面の操作とデータベースの直接操作の二段階であり、複製したブログ以外のブログを削除する場合にも使えます。

ただし、管理画面の操作を必要とするためMTで不具合が起きた場合の対処法にはおすすめしません。

管理画面の操作

まずは管理画面の操作です。
管理画面ではブログの削除を行います。

後からデータベースを操作するならそちらで削除すればよい、と思うかもしれませんが、ブログの削除は管理画面から行った方が簡単です。
データベース内ではブログ記事、コメント、トラックバック、テンプレート、設定などが別々に保存されていますが、管理画面でブログを削除する場合はそれら関連する関係も含めて一括で扱ってくれます。

削除の方法はMovableType.jpでも説明されているように、システムメニューからブログの一覧を呼び出して任意のブログを削除します。

ブログの規模(記事やコメント・トラックバックの数)によっては長い時間待たされますが、その間は絶対安静です。
ブログの削除が正常に行えないとデータベースが手に終えない状態になる可能性があるので、絶対安静にして待ちましょう。

管理画面の操作はこれで終了です。

データベースの操作

つづいて、データベースの操作です。
データベースの操作ではauto_incrementの値を変更します。

しかし、データベースの操作は行わなくても問題はありません。
auto_incrementの説明でデータベースを操作するか決めて下さい。

auto_incrementとは

データベースに保存されるデータは個別のidによって区別されています。
そのidは特別な場合を除き、テーブルごとに全て連番となっています。
次データへ予定されている連番がauto_incrementです。

MTのデータは全て固有のidを持ち、それらが再利用される事はありません。
つまり、データが削除された場合にそのidは永久欠番となります。

ブログの削除を行った場合は永久欠番が大量に発生し、次データと現データのidに大量の差が生じます。
その差を小さくするためにauto_incrementの値を編集します。

なので、次データと現データのidに差が生じても気にならないのであれば、auto_incrementを操作する必要はありません。

具体的には連続するブログ記事でMTEntryIDタグの値が連続しなくなります。

私の環境では現データが900番に対して、auto_incrementは1801でした。
個人的に、すこぶる不快な状態なのでauto_incrementを編集します。

auto_incrementの編集

それでは実際の操作ですが、データベースの種類、ツールの種類、phpMyAdminのバージョンによっては方法が異なると思います。

私の場合、データベースがMySQLであったため、phpMyAdminというツールを使いました。
私が使ったphpMyAdminのバージョンは2.11.9.5です。

まず、phpMyAdminを使ってMTのデータベースを開きます。
その中にあるmt_****というテーブルらにMTのデータが収められています。
私の場合でテーブルは42個ありましたが、MTのバージョンによって数は異なると思います。

ここではmt_entryを例として説明します。

1. auto_incrementの値を確認する

まず、画面左のメニューからmt_entryを選び、操作タブを開きます。
そのテーブルがauto_incrementを使っているのなら、ページ内に項目と値が見つかると思います。

見つからなければそのテーブルはauto_incrementを使っていないという事です。
その場合は次のテーブルに移って作業を行います。

2. 現データの値を確認する

つぎに、表示タブを開きます。
そしてキーでソート:PRIMARY (昇順)を選び、データを並べ替えて表示します。
その時、一番上に表示された行が現時点で一番新しいデータになります。

確認する値は、mt_entryテーブルの場合はentry_idの値です。
この値が先に説明した個別のidです。
他のテーブルでは、mt_****に対して、****_idと対応しているのでわかりやすいと思います。

3. auto_incrementの値を変更する

auto_incrementの値を変更するには操作タブへ移動します。
そして、値を変更して実行ボタンを叩けば、全ては完了します。

仮に、auto_incrementの値を現データ以下で入力した場合は、現データ+1の値に修正されると思います。

この調子で他のテーブル(mt_****)にも行います。
テーブルが役割を知らない場合は全部やるか、全部やらないかのどちらかにした方が無難です。

補足

色々と回りくどい説明をしましたが、phpMyAdminでSQL構文を使えばもっと簡単に終わらせる事ができます。
さらに、phpMyAdminではなくシェルでデータベースに接続する方法だともっと少ない手順で済むと思います。
興味がある方はご自分で調べてみて下さい。

私は、シェルは怖くて怖くて、あんまり使えませんので、今回の方法で十分です。
二度とauto_incrementを変更する事もないと思いますし。

コメント[0]

コメントはまだありません。

コメント投稿フォーム

コメントを投稿するにはJavaScirptが必要です。ブラウザのJavaScriptを有効にしてください。

コメント投稿フォーム

トラックバック[0]

トラックバックはまだありません。

カテゴリ
アーカイブ
ヘルプ
Feed

フィードとは