いっしきまさひこBLOG

AI・機械学習関連、Web制作関連、プログラミング関連、旅行記録などなど。一色政彦。

MTでMySQLへ移行したデータのTrackBack IDがおかしくなる

私の環境で「mt-db2sql.cgi」を使って、MovableType(以降、MT)のデータベースを、MT標準のBerkeley DB(以降「DB」と略記)からMySQLデータベースへ移行すると、「mt-db2sql.cgi」自体は「正常に完了した」という内容のメッセージを表示するのですが、TrackBackデータ(具体的には、mt_trackbackテーブルのtrackback_idフィールド)が変わってしまって、トラックバックがおかしくなります。

ですが、「mt-db2sql.cgi」を少し修正すると何とか回避できたので、このエントリーで参考情報として紹介しておきます(PostgreSQLで同様の現象でお困りの方もこの方法が有効かもしれません)。

なお、万が一、本エントリーの操作を行ったことが原因で、何らかの問題や障害などが発生したとしても本サイトおよびサイト管理者は一切の責任を負いません。ご了承ください(一応、免責ということで)。

MTでのMySQLへの移行方法はWeb上にたくさん情報があるので、ここでは説明しません。詳しくは次のサイトを参考にするとよいでしょう。

【MySQL移行の参考サイト】ロリポップ!MovableTypeのMySQL移行

(この上記のサイトでの説明で注意してほしいのは、「DataSource ./db」をコメントアウトすると書かれていますが、このDataSourceの指定をコメントアウトできるのは、変換前のデータベース(DB)が「./db」にある場合だけです。これをコメントアウトすると、DBが「./db」にあると暗黙的に指定したことになります。もしデータベースが「/home/www/blog_data」など、「./db」以外の場所にある場合はコメントアウトできません。)

【修正方法】

「mt-db2sql.cgi」をメモ帳などで開いて、以下のようになっている記述を

my @CLASSES = qw( MT::Author MT::Blog MT::Category MT::Comment MT::Entry

MT::IPBanList MT::Log MT::Notification MT::Permission

MT::Placement MT::Template MT::TemplateMap MT::Trackback

MT::TBPing );

次のように書き換えてみてください。

my @CLASSES = qw( MT::Trackback MT::Author MT::Blog MT::Category MT::Comment MT::Entry

MT::IPBanList MT::Log MT::Notification MT::Permission

MT::Placement MT::Template MT::TemplateMap

MT::TBPing );

見れば分かりますが、「MT::Trackback」の処理を最初に持っていっただけです。

これでなぜうまくいくようになったのか、私は分かりません。とりあえず動くのでそれで満足して、それ以上は調べていません。(^^;)