April 30, 2009

Movable Type のエントリーIDを変更する

エントリーIDの修正

Movable TypeのエントリーIDが700番台になるという症状が現れました。そこまで記事を投稿していないのにそんな数が表示されるのは「おかしいよね」ということでそれを修正しました。

修正のためにMySQLのauto_incrementをいじります。

MTのエクスポートとバックアップを取る

MT上でデータをエクスポート、それと念のためバックアップを取ります。
恐らくエクスポートしたデータだけで事足りるとは思います。

MySQLへ接続
$ mysql -h hostname -u username -p

この後パスワードが求められるので入力してください。
無事に接続できたら、MySQLが持っているデータベースを確認します。

mysql > show databases;

すると、こんな風に出てくるはずです。

+--------------------+
| Database |
+--------------------+
| information_schema |
| your_mtblogdb |
+--------------------+

ここにあるinformation_schemaというのはMySQLが5.0以上の場合のみです。これにはメタ情報が入っている特殊なデータベースで、今回はこのデータベースは関係ありません。

主に使用するデータベースを選択する
mysql > use your_mtblogdb;
主に使用するデータベースの中身を確認する
mysql> show tables from your_mtblogdb;
+-------------------------+
| Tables_in_your_mtblogdb |
+-------------------------+
| mt_as_ua_cache          |
| mt_asset                |
| mt_asset_meta           |
| mt_association          |
| mt_author               |
| mt_author_meta          |
| mt_blog                 |
| mt_blog_meta            |
| mt_category             |
| mt_category_meta        |
| mt_comment              |
| mt_comment_meta         |
| mt_config               |
| mt_entry                |
| mt_entry_meta           |
| mt_field                |
| mt_fileinfo             |
| mt_ipbanlist            |
| mt_log                  |
| mt_notification         |
| mt_objectasset          |
| mt_objectscore          |
| mt_objecttag            |
| mt_permission           |
| mt_placement            |
| mt_plugindata           |
| mt_profileevent         |
| mt_profileevent_meta    |
| mt_role                 |
| mt_session              |
| mt_tag                  |
| mt_tbping               |
| mt_tbping_meta          |
| mt_template             |
| mt_template_meta        |
| mt_templatemap          |
| mt_touch                |
| mt_trackback            |
| mt_ts_error             |
| mt_ts_exitstatus        |
| mt_ts_funcmap           |
| mt_ts_job               |
+-------------------------+
クエリを打つ

上から順に一つずつ確実に入力していってください。

mysql > delete from mt_entry;
mysql > delete from mt_placement;
mysql > alter table mt_entry auto_increment=0;
mysql > alter table mt_placement auto_increment=0;

この作業が終わったら、MySQLからログアウトします。

mysql > quit
インポートします。

MT上でエクスポートしたデータをMT上からインポートします。

特に問題なければ、これで終了です。