Movable TypeのデータベースをBerkeleyDBからSQLiteへ変更しました。
変更理由はMT3.2へバージョンアップした後システムチェックは成功したにもかかわらずエラー(追記参照)が出て再構築が出来なくなったのです。
BerkeleyDBはデータ量が多くなるとMTの再構築が出来なくなる問題点があり、応急手当として一度に再構築をかける件数を5件と減らしてなんとかエラーを回避できましたが、この方法では再構築にえっらい時間がかかる。以前からエントリーのデータ件数が多いので時間がかかっていましたが比ではありません。待ってる間に気が遠くなりそうです。
というわけでMTをする上でBerkeleyDBを続けるのは無理があり移行は必須!代わりのデータベースにはMySQLほど堅牢でなくてもSQLiteが処理も早くて良いらしい。
変更手順
1.Ogawa::Memorandaさんの「mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト」をFTPソフトでアップロードし、CGIのパーミッションを設定する
2.Webブラウザでmt-db-convert.cgi(MT3.2用)にアクセスしCGIを実行させる
3.転送元の情報は自動で入力済み
転送先の項目を入力
ObjectDriver: DBI::sqlite
Database:/home/~/mt/ファイル名
※Databaseは自分のSQLite用のデータファイルとなるファイル名までを入力
4.Convert をクリックすると自動でデータが変換される
mt-config.cgiの設定用の情報が表示されるので修正し再アップロードする
mt-config.cgi の修正箇所
63行目 ObjectDriver DBI::sqlite
コメントアウト#を外す SQLiteを使う
64行目 Database /home/~/mt/ファイル名
コメントアウト#を外し SQLite用のファイルを指定する
70行目 # DataSource /home/~/mt/db
BerkeleyDB用のディレクトリの指定なのでコメントアウト#をつける
気をつけること
データを入れる場所はBerkeleyDB では、ディレクトリ(一般的には /mt/db)に入っていたので勘違いしやすいが、SQLite では指定したファイル名で自動的にファイルが生成される。
これを分からずにデータ用ディレクトリを先にFTPソフトなどで作るというミスにハマリやすいような気がする。私は気を利かせて先にSQLiteのディレクトリを作っていたのでmt-db-convert.cgiを実行させた時にエラーが出ていたがこれを削除したら上手くできた。
また、mt-config.cgi も先に修正する必要はなく、変換後に修正用データが表示されるので、それに沿って書き換えれば良い
失敗しないコツは「手順通りに!」とにかく、mt-db-convert.cgi を実行してから!
Ogawa::Memoranda
「mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト」
http://as-is.net/blog/archives/001023.htmlむちゃむちゃ簡単便利なソフトです。こんなにあっさりと4種類のデータベースを自由自在に操ることができるなんて夢みたい!?
追記 エラーについて
An error occurred while loading data:
繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: unable to open database file(1) at dbdimp.c line 94
というもので、このエラーに悩まされている人はOgawa::Memorandaさんのサイトのコメントの書き込みを見ても多いようです。
先にディレクトリ(データ格納用のフォルダ)を作成している場合にこのエラーメッセージが出るようです。手順にディレクトリを先に作っておくという記述は無いのですが、今まで(もしくは他のソフト)はそうだったからいるだろうと早合点してしまうのですよね。このディレクトリを削除したら上手くいきました。