思慮g ~考えるblog~

SQLiteへの移行に成功

どうも不具合が残っているらしいMovable Type 3.2-ja-2を不自由なく使っていくには,
BerkeleyDBの使用を止めなければいけないようでした.
しかし前回mt-db2sql.cgiによるSQLiteへの移行に失敗しています.
と言う訳で,今度は別の方法で移行を試みました.
うまく行ったようなのでここに記しておきます.
良かったら参考にどうぞ.

今回実施したのは

Movable Type 3.2-ja-2でのBerkeleyDBからSQLiteへの移行作業

です.
ちなみにサーバーはXREAです.
mt-db2sql.cgiでは経過時間の所為か,成功しませんでした.
また,mt-db2sql.cgiではうまく行かないと言う話は移行方法の模索中にいくつか見つけました.
その中で見つけたのがOgawa::Memorandaさんが作成したmt-db-convert.cgiです.
MTデータベースの相互変換CGIスクリプトとあるように,

Movable TypeのデータベースをDB間で相互にコンバートするCGIスクリプト

です.
各種データベース間の移行に使えるようですが,今回はこのスクリプトを使って,
BerkeleyDBからSQLiteへの移行作業を行う事にしました.
様々なblogを見た結果,mt-db2sql.cgiでは失敗したが,mt-db-convert.cgiでは成功したという話が多く見られ,また作者さん自信も

SQLiteに関するチューニング
mt-db-convert.cgiは、SQLiteのトランザクション機能を利用したチューニングを行っています。このため、出力先DBをSQLiteにした場合、mt-db2sql.cgiを使用するのに比べて大幅な高速化が期待できます。参考までに、私の手元の環境では、BerkeleyDBからSQLiteへの変換が93秒から25秒に短縮されました。
つまり、レンタルサーバーなどではタイムアウトで500 Internal Server Errorになりがちなmt-db2sql.cgiの代用としても使用することができます。

と書かれている所からして期待大でした.
結果,成功したのですが,その過程を順に説明します.
まず,Ogawaさんの所よりmt-db-convert.zipをDLします.
使い方はサイトにある通りですので,読んでその通りに進めば問題なくできます.
とりあえず経験を踏まえバックアップだけは念入りに取り,DL&解凍したmt-db-convert.cgiをアップ.
このときmt-db-convert.cgiは変更しません.
またmt-config.cgiも変更不要です.
アップ後,パーミッションの変更をして,ブラウザでmt-db-convert.cgiへアクセスします.
下図のような画面が出るので適当な位置に入力します.

mt-db-convert.cgiの入力画面
適切な情報を入力

前述の様に今回はBerkeleyDBからSQLiteへの移行なので,該当データベースを図の様にプルダウンメニューから選択します.
もっとも,元となるデータベース(左側)の情報はmt-config.cgiから自動で取得してくれるので,基本的にいじる必要はありません.
やることは右側に移行先の情報を入力し,Convertを押すだけなのですが,
私はBerkeleyDBと同じように項目を埋めれば良いと思い,
「ObjectDrive」は正しくSQLiteにしたものの,SQLiteを設置するパスの入力場所を間違えて「DataSource」に入力してしまいました.
そのため,

An error occurred while loading data:
繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: unable to open database file(1) at dbdimp.c line 94

とのエラーが表示されてしまいました.
パーミッションを変えるなど試行錯誤をするもののうまく行く訳も無く,
エラーメッセージで検索してみた所,Odysseygate.comさんの所へたどり着きました.
私にとっては幸運な事に,Odysseygate.comが全く同じ事をやっており,
その解決策を記しておいてくれたおかげで,
SQLiteへの移行で入力するべき項目は「DataSource」ではなく「DataBase」だと知る事ができました.
mt-db-convert.cgiの使用方法をしっかり読めば確かにDataBaseと書いてあるのですが,
完全に見落としてました.
結果としては,左側(BerkeleyDB)は1番上のDataSourceにパスを入力,
右側(SQLite)は上から3つ目のDataBaseにパスを入力すれば良いと言う事です.
その他の項目は空欄で構いません.
かくして,各項目を入力した後Convertボタンを押すと,移行作業自体は約22秒で終了.
指示に従ってmt-config.cgiを編集,アップロードして全て完了しました.
まだ分かりませんが,再構築も順調に完了しましたし,
ping送信もできるようで,見事不具合は解消されたと言えそうです.
mt-db-convert.cgiを製作されたOgawaさんにはホント感謝です.
ありがとうございました.

6 thoughts on “SQLiteへの移行に成功

  1. 祈祷下等

    はじめまして。自分も最近、投稿時の500に悩んでたんですが、このエントリを参考にDBをSQLITEに変更してトラブル解消しました♪
    どうもありがとうございました

  2. earther

    祈祷下等さん,始めまして.コメントありがとうございます.
    サイトを拝見した所上手く行ったようでなによりです.
    自分の記事が役に立ったと言って頂けると書いた甲斐があります.
    私も移行の過程で様々なサイトを参考にさせてもらいました.
    成功例やノウハウを多くの方で共有しようとしているのって良いですね.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です