Home » July 2005 » mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト

mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト

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

MT Database Converter.ja JP - Ogawa Code

Movable TypeのデータベースをBerkeleyDB、MySQL、PostgreSQL、SQLiteの間で相互に変換するCGIスクリプトです。テスト環境から本番環境への移行、プラグインの開発、そしてDBのアップグレードなど、データベースを一方から他方に移行したい場合に役に立ちます。DB間の相互変換は、従来からMovable Typeに付属しているmt-db2sql.cgiと拙作のmt-sql2db.cgiを組み合わせれば実現できましたが、このスクリプトはそれを単体で実現します。また、mt-sql2db.cgiにあったバグをいくつか修正してあります。

今年の3月くらいには作ってあったのですが、mt-db2sql.cgiのコードを再利用しているので公開を見送っていました。この度ようやくSix Apartの言質が取れたので公開する次第です。

このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/293

Links referred to this entry

Comments (148)

  1. こんにちは 初めまして ogawaさん。
    先ほどはありがとうございました。

    以前からこちらのブログは拝見しておりました。
    また便利な物があれば利用させて頂きたいと思います。

  2. 初めまして。
    すいません、ロリポップでMySQLからSQLliteに変更したくて、こちらのcgiを使用しているのですがどうもうまく動作しません。

    動作確認が3.1までということなので、3.2の環境下で行おうとしているのがいけないのでしょうか?

    エラーメッセージは以下のとおりです。

    「An error occurred while loading data:
    table mt_author already exists(1) at dbdimp.c line 268 at mt-db-convert.cgi line 151. 」

    先にmt-config.cgiを書き換えて一回SQLiteを初期化してしまったのがいけなかったでしょうか?

    最近ロリポップであまりにも500エラーが出てたまらないため、SQLiteへ移行しようとしているのですが・・・
    申し訳ありません、対処方法がありましたら教えてください、よろしくお願いします。

  3. 一度そのSQLiteのDBファイルを削除する必要があります。
    また、このスクリプトはMT 3.2でも動作しますが、より3.2に特化したバージョンを作っているところです。

  4. ogawaさんありがとうございます、ファイルの件は気がついて削除してみたんですが、今度は違うエラーが出てきました。

    「Dumping MT::Author:
    **** WARNING: DBI::db=HASH(0x865da88)->disconnect invalidates 1 active statement handle (either destroy statement handles or call finish on them before disconnecting) at lib/MT/ObjectDriver/DBI.pm line 385.

    An error occurred while loading data:
    table mt_author has no column named author_api_password(1) at dbdimp.c line 268 」

    今度は何がいけないのでしょうか・・・

  5. destination側のDBファイルが作れるように親ディレクトリのパーミッションは設定してあるでしょうか。

  6. えと、パーミッションは755になってます。
    ですので、dbファイルは存在しています。
    削除しては実行を繰り返してるのですが、同じエラーで躓きます。
    何がいけないのかさっぱり・・・

  7. いま確認したところ、3.1用のmt-db-convert.cgiを使って、MT3.2上でMySQL→SQLiteの変換をしようとしたところ、同じエラーが出ました。

    3.2用に作ったものでは正常に変換できました。もう少しでリリースできると思います。

  8. ogawaさん、ありがとうございます。
    楽しみに待ってます。
    よろしくお願いします。

  9. ogawaさん、こんなに早く公開してくださってありがとうございました。
    本当に助かりました。
    お礼TBさせていただきますm(_ _)m

  10. はじめまして。
    BerkeleyDBからSQLiteへの変換をしてみようと思い、
    mt-db-convert31.cgiを使用してみたのですが
    エラーメッセージは特に表示されないのですがコンバートの途中で
    止まってしまいます。(以下のような部分で停止してしまいます。)

    MT::Entry
    .......... .......... .......... .......... .......... ......

    何がいけないのでしょうか?

  11. おそらくDisk I/Oのコンテンションが起きています(BerkeleyDBでbusy read + SQLiteでbusy write)。レンタルサーバーを使っている場合には空いている時間帯を選んで実行する必要があるでしょう。

  12. ogawaさん、レスありがとうございました。
    あれから何回かトライしてみたのですが上手く行かず、
    途中で止まっていた部分「Entry」の読み込み順番を
    先頭に持っていったところうまく変換できました(原因不明です…)

    しかし、mt-db-convert.cgiが凄く早いのでビックリしました。
    Quasi-Spam Filter Pluginなども愛用しておりますが
    どれも素晴しいものばかりです。これからも頑張ってください!!

  13. ogawaさん
    いつもこそこそお世話になっております。すみません。

    さて、ロリポで3.2へ移行させるにあたり、取り急ぎ、今のBerkeleyDBで動いてる3.17をSQLiteへコンバートさせてみたのですが、トラックバック周りのみ非表示になってしまったのですが・・・。きちんとコンバートできてないということですかねぇ。

    表示上は MT::Trackback saved と出てるのでコンバートされてるはずなのですが、SQLiteへコンバートして再構築をかけると、トラックバックを受けたエントリータイトル自体は表示されても、トラックバックをしてきた元自体の表示は消えてしまうのです。インデックスでのカウント表示自体も(0)になってしまいました。(笑)

    管理画面内でのトラックバック情報は生きているので、うまくDBから拾って来れてないような感じなんですが・・・。

    BerkeleyDBへ再コンバートさせて元に戻しましたが、何がいけないのでしょうかねぇ。

    対処方法がありましたら、宜しくお願いいたします。

  14. 私の手元の環境ではこの症状が再現できませんでした。
    トラックバックのある各エントリーの編集画面の下部に、対象トラックバックのリストは表示されますか。

  15. ogawaさん
    すばやいレスありがとうございます。

    いえ、SQLiteにした時は、リスト表示されなくなりました。トラックバックカウントも(0)なので・・・。

    ちなみに、ogawaさんの recently_pinged_on Plugin を使用させていただいて、最近のトラックバックリストはまとめてるんですが、中身はogawaさんが例示されている内容とほとんど変わらないです。が、SQLiteにコンバートすると、トラックバックを受けたエントリータイトルは表示されるけど、その他のトラックバック周りは表示されなくなってしまうという。

    個別エントリアーカイブもデフォルトと大幅な変更はしてないので、何なんでしょうかねぇ。(苦笑)

    3.2へアップグレードしてからSQLiteへコンバートするのが良いんでしょうかねぇ・・・。

    とりあえず、またSQLiteにして、最近のトラックバックリストだけ再構築してみましたので、よかったら見てみてくださいな。

    こんな感じです。

    http://blog.garaku.cc/response.php

  16. もう一度書きますけれど、トラックバックのある各「エントリーの編集画面の下部」に、対象トラックバックのリストは表示されますか。

  17. ogawaさん
    すみません。編集画面でしたね。
    いえ、リスト表示されてません。

  18. どうもトラックバックデータとエントリーの関連付けが壊れているか、MTが読めないでいるようですね。mt-db-convert.cgiを使用した結果としてこれが生じる可能性はないと思います。もし生じるのであればmt-db2sql.cgiでも生じるはずです。

    ところで、
    >BerkeleyDBへ再コンバートさせて元に戻しましたが、何がいけないのでしょうかねぇ。
    が非常に気になっているのです。もしそういうことを繰り返しているのだとしたらデータベースの健全性は保証しようもありません。オリジナルのBerkeleyDBのバックアップを確実に取り、そのコピーを対象に作業を行ってください。3.2にアップグレードする場合でも同じです。

    mt-db-convert.cgiを使ってBerkeleyDB→SQLiteの変換がうまく行かない場合、まず3.17→3.2のアップグレードを行い、次にSQLiteに変換してみるのもよいでしょう。それでうまく行くかもしれませんし、そうでないかもしれません。

  19. ogawaさん

    お手数をおかけしました。
    やはりDBがいかれてるんでしょうねぇ。
    素人の手遊びで弄ってきたつけかな。(苦笑)

    バックアップデータ戻しときます。
    で、3.2は新規でいれるかしてみます。

    ありがとうございました。

  20. ogawaさん、いつもお世話になっています。
    MT3.2にしてから、エントリーの再構築中に500エラーが出て困っていたので、mt-db-convert.cgi利用させて頂こうと思いました。
    ですが、実行すると、このようなメッセージが表示されます。

    Loading database schema...

    **** WARNING: Subroutine Jcode::ucs2_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 56.

    **** WARNING: Subroutine Jcode::euc_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 71.

    **** WARNING: Subroutine Jcode::euc_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 87.

    **** WARNING: Subroutine Jcode::utf8_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 94.

    **** WARNING: Subroutine Jcode::ucs2_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 101.

    **** WARNING: Subroutine Jcode::utf8_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 124.

    Loading data...
    MT::Author
    .
    (1 objects saved.)

    MT::Blog
    ...
    An error occurred while loading data:

    SQL繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: mt_blog.blog_name may not be NULL(1) at dbdimp.c line 401

    データベースなどの知識も皆無に等しいので、知らず知らずのうちになんらかのミスを犯しているのかもしれません。
    文字化けしていることも何か影響があるのでしょうか?
    宜しくお願いします。

  21. Jcode.pmがロードされているのがおかしいですね。

    ・Perlのバージョンは5.8以上であるかどうか確認してください。
    ・mt-config.cgiに「UseJcodeModule 1」という行があったらコメントアウトしてください。
    ・extlib以下のJcode.pmとJcodeディレクトリを適当にリネームするか削除してみてください。

  22. ogawaさん、お返事ありがとうございます。
    サーバーはロリポップを使っており、perlは5.8.0、mt-config.cgiに「UseJcodeModule 1」という行は見あたりませんでした。
    extlib以下のJcode.pmとJcodeディレクトリを削除して、実行してみたところ、次のようなメッセージが表示されました。

    Loading database schema...

    Loading data...
    MT::Author
    .
    (1 objects saved.)

    MT::Blog
    ...
    An error occurred while loading data:

    SQL繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: mt_blog.blog_name may not be NULL(1) at dbdimp.c line 401

    どのような原因が考えられますでしょうか。
    御手数をおかけして、申し訳有りません。
    宜しくお願いいたします。

  23. 「ブログの名前」をコード変換できないのか、空なのか、どちらかが原因ではないかと思います。
    一時的にブログの名前をダミーのものに変更してからconvertし、その後元の名前に戻すとうまくいくかもしれません。

  24. mt-convert.cgi  使わせていただき、我がMTも やっと BerkeleyDBから卒業することができました。
    ありがとうございました。

  25. こんにちは
    以下のようなエラーが出て困っています
    どこに問題があるのでしょうか?
    mt-db-convert.cgi($Rev: 141 $): Converting your MT data between DB engines (for MT 3.2)


    An error occurred while loading data:

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

  26. DestinationのDatabaseに指定したファイルに書き込みができないのでしょうね。その親ディレクトリのパーミッションを調べてください。

  27. 755でした
    BerkeleyDBからSQLITEにしたいのですが
    DBパスワードの部分には何を書くのでしょうか?
    その他の項目もよく分かりません

  28. 親ディレクトリのパーミッションが755のときに書き込めるかどうかはサーバー環境に依存することなので私は判断できません。もし書き込めないのなら775などに変更してうまく行くかどうか確認すべきでしょう。
    また、SQLiteではDatabase以外は空欄で構いません。

  29. サクラですが777でも757でも駄目でした
    その内500サーバーエラーが出るようになってしまいました。
    ちなみにmt-db2sql.cgiでも書き込めません
    すいません。出直してきます

  30. 何回も申し訳有りません。
    ブログの名前を「test」にし、保存。その後、実行したのですが、同じ結果に終わりました。
    本当、御手数をおかけします。

  31. うーん。

    http://as-is.net/blog/archives/001023.html#c1594 のメッセージを見ていると、少なくとも4つBlogがあってその4つ目に問題があるように見てとれます。そのブログは大丈夫でしょうか。

  32. 現在、blogは3つしかありません。
    他のblogの設定、ブログの名前なども変更が必要でしょうか?

  33. お世話になります。どうぞ、よろしくお願いします。
    BerkeleyDBのまま、3.17から3.2-ja-2 にしました。
    今のところ、エントリやコメントの投稿、個別アーカイブのテンプレートの手直し、再構築など、特に不具合はないようです。
    そこで、mt-db-convert-cgi を実行してみたら、以下のようなエラーになってしまいました。3.2-ja-2 のファイルの転送がうまくいってないということなのでしょうか?

    **** WARNING: Bareword "SQL_DATETIME" not allowed while "strict subs" in use at lib/MT/ObjectDriver/DBI.pm line 469.

    **** WARNING: Bareword "SQL_TYPE_TIMESTAMP_WITH_TIMEZONE" not allowed while "strict subs" in use at lib/MT/ObjectDriver/DBI.pm line 473.

    **** WARNING: Bareword "SQL_TYPE_TIMESTAMP" not allowed while "strict subs" in use at lib/MT/ObjectDriver/DBI.pm line 475.
    **** WARNING: Bareword "SQL_BLOB" not allowed while "strict subs" in use at lib/MT/ObjectDriver/DBI.pm line 493.
    **** WARNING: Bareword "SQL_CLOB" not allowed while "strict subs" in use at lib/MT/ObjectDriver/DBI.pm line 495.

    An error occurred while loading data:
    Unsupported driver MT::ObjectDriver::DBI::postgres: Compilation failed in require at lib/MT/ObjectDriver/DBI/postgres.pm line 10.
    BEGIN failed--compilation aborted at lib/MT/ObjectDriver/DBI/postgres.pm line 10.
    BEGIN failed--compilation aborted at (eval 8) line 1.

  34. まったくうまく行っていませんね。というか、エラーメッセージだけ見ても判断がつきません。私に分かるのは、Postgresと何かの間の変換をしようとしているということだけです。問題は、Postgres用のモジュールがインストールされていないのかもしれませんし、lib/MT/ObjectDriver/DBI/postgres.pmにプログラムミスがあるのかもしれません。

    まずはmt-check.cgiを実行してみることではないでしょうか。

  35. ogawaさん、毎回お世話になっております。
    ブログを一覧で見てみると、見覚えのない無名のブログが作られていました。それが「4つ目」でしょうか。
    それを削除すると、劇的に変化し、
    MT::Log
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... ....
    An error occurred while loading data:

    out of memory(7) at dbdimp.c line 268
    で、停止しました。
    こちらでももう一度、色々な場所を見てみます。

  36. Ogawa さん、さっそくありがとうございます。
    BarkeleyDB から Postgre へ移行したかったのですが、旧3.17の時にmt-db-convert31 を実行してみたら、すんなり変換できましたので、安易に考えていました。
    今あたらめて、mt-check.cgi を実行したら、
      サーバーに、「DBD::Pg」がインストールされていない、古いバージョンが
      インストールされている、もしくは「DBD::Pg」に必要なモジュールがイン
      ストールされていません
    ということでした。レンタルサーバの仕様を見たら、「データベース用のPerlモジュールとして、DBI、DBD::Pg、Pg.pmを用意している」ということでしたが、Perlは 5.005 でした。
    これはもう、あきらめるしかないのでしょうか?

  37. ajiさん: 管理画面からログを一旦クリアしてから変換したらどうでしょうか。

    s.fujinoさん: レンタルサーバーの仕様に関わることはまったく判断できません。レンタルサーバーに要求すればPerlのバージョンを上げられるのかもしれないし、そうでないかもしれません。MySQLならまともに使えるのかもしれませんし。

  38. ogawaさんはじめまして。

    mt-db-convert31.cgiを利用して、MT3.17の環境でBerkeleDBからSQLiteに変換しようとしたら途中で下記のようなエラーメッセージが出ました。

    MT::Category
    .**** WARNING: DBD::SQLite::st execute failed: mt_category.category_parent may not be NULL(1) at dbdimp.c line 397 at lib/MT/ObjectDriver/DBI.pm line 241.


    An error occurred while loading data:

    Insertion test failed on SQL error mt_category.category_parent may not be NULL(1) at dbdimp.c line 397

    使用しているSQLiteのバージョンは1.09、perlは5.8.0です
    どのような問題が考えられますでしょうか?

  39. ogawaさん、お返事ありがとうございます。
    ログを消去して、実行しましたところ、
    MT::TBPing
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... ......
    An error occurred while loading data:

    SQL繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: mt_tbping.tbping_blog_id may not be NULL(1) at dbdimp.c line 401
    というところまでいきました。
    トラックバックに関する問題でしょうか?

  40. 先ほど書き込んだ者です。

    自己レスですが
    実は一番最初にMTを使用したときはBerkeleyDB
    その後SQlite(バージョン0.25)へ移行したことがありました。
    今回サーバーレンタルの管理者側からSQLiteのバージョンを上げるとの事で、SQLite0.25とSQLite1.09はデータの互換性が無いので
    SQLite0.25⇒BerkeleyDB⇒SQLite1.09という移行をしようとしました。
    が、どうも一番最初にBerkeleyDBで使ってた頃のカテゴリーデータ(その後SQLite0.25環境で変更や削除したもの)がBerkeleyDBに残っていたようで
    それが悪さをしているように思えてきました。

    バックアップは取ってあるので、MT3.17かMT3.20をクリーンインストールしてリストアするしか無いですかね。
    なにか他に良いお知恵をお持ちでしたらご教示いただければ幸いです。

  41. 手元にWindowsマシンがあるのであれば、
    http://www.sqlite.org/download.html
    からSQLite2とSQLite3のコマンドラインプログラムをダウンロードしてきてください。

    次にコマンドラインから以下のように実行するとSQLite2用のDBファイルをSQLite3用のDBファイルにコンバートできます。
    sqlite old.db .dump | sqlite3 new.db

    コンバートしたDBファイルはDBD-SQLite 1.09で利用できます。

  42. Ogawaさん、初めまして。
    現在サーバーはロリポップを利用してまして、MT3.17からMT3.2-ja-2に移行するなかで、エラーが起きて困っています。そのなかで、この相互変換のCGIを利用させてもらおうと思ったのですが、
    An error occurred while loading data:
    繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: unable to open database file(1) at dbdimp.c line 94
    というエラーが出てしまい、コンバートができませんでした。上記から推測できる内容でアドバイスがいただければと思います。よろしくお願いします。

  43. はじめまして。
    mt-db-convert.cgiを使わせていただきました。
    ありがとうございました。
    コメントさせていただきましたのは、エラー表示は出ないものの、エントリーが全て移行されません。

    MT::Entry
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... ...

    で終わってしまうんです。
    実際のエントリー数は675なのですが、相互変換後は643と微妙に少ないんです。
    確認してみると途中でエントリーがごっそり抜けていました。
    これは一体何が原因なのかと思いコメントさせていただきました。
    よろしくお願いいたします。

  44. それは単にスクリプトが最後まで終了していないだけでしょう。

    ryuichi_hkgさんの質問に関してはすでにコメント欄で答えていますが、dbファイルの置かれるディレクトリのパーミッションを確認してください。

  45. Ogawaさま
    返答いただきありがとうございました。
    あの後、SQLiteの方に変えて再度やってみましたらうまく行きました。
    ありがとうございました。

  46. ogawa様
    過去の記述をよく確かめずに質問してしまいました。内容としてはポチさんと同じ状況で、同様の事をしてみましたが、解決しませんでした。お手数おかけしました。

  47. 上のほうで2回言われている、

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

    は、おそらくサーバ(さくらインターネット?)の問題かと思うのですが。

    私も同じエラーが出ます。

  48. 問いはひとつ、ゆえに答えもひとつです。

    ・Databaseを本当にフルパスで指定しているかどうかを確認
    ・Databaseの親ディレクトリに書き込み権限が設定されているかどうかを確認
    ・さくらインターネットで本当にSQLiteが使えるのかどうかを確認

  49. ogawaさんが何度も同じ事を言われているので余計なお世話かも知れませんが…。

    私も同じyokkuさん ryuichi_hkgさん ぽちさんと同じ症状が一度出ましたがogawaさんの言ってる事をチェックし即座に解決しました。
    以下やったこと。

    1,mt-db-convert.cgiで指定したフルパス(例えば、$HOME$/cgi/mt/db)とmt-config.cgiのDatabaseの部分(例えば、$HOME$/cgi/mt/db/sqlite.db)とが間違ってないかどうかだけだと思います。

  50. 解決しました。

    > また、SQLiteではDatabase以外は空欄で構いません。

    Database は Require なのですね。

    ありがとうございました。

  51. MT3.2-2に移行し、再構築に支障が出たため、
    mt-db2sql.cgiでバークレイDBからPostgreSQLへの変換を行ってみましたが、
    エラーの連発&ログインに失敗するようになってしまい途方に暮れていましたが、
    こちらのcgiで助かりました。完全に移行することが出来ました。
    ありがとうございます。

  52. 何気なくアップグレードしたMT3.2がエラー連発…
    困惑&激怒した末にたどり着いたのがここでした。
    本当に助かりました。昨日の苦労が嘘のように快適です。
    ありがとうございました。

    これからも頑張ってください。

  53. あらかじめmt-config.cgiの変更が必要がないというのがありがたく、利用させていただくことにしました。当初、20番さんと同じWorningが出て、悩んでいたのですが、コメントに従い、perlをバージョンアップして解決しました。うまく変換できたと思ったのですが、しかし、なぜか、Movable Typeで文字化けしてしまいます。Berkeley DBでは起こらず、mySQLに切り替えると起こる現象です。phpmyadminでmySQLに変換されたtableを見ると、こちらももじばけしているようです。Movable Typeのバージョンは3.2のRelease2です。お心当たりがあったら、ご教示下さい。

  54. MySQLのバージョンが4.1以降の場合、サーバーの設定によってはSQLSetNamesの指定をmt-config.cgiに加える必要があります。詳しくはインストレーションドキュメントなどを参照してください。

  55. はじめまして。

    サーバーはロリポで、バークレイでした。
    このたびSQLiteに変更しようとしています。
    ところが、こんなエラーが出てしまい全然先に進めません。


    **** WARNING: Subroutine Jcode::ucs2_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 56.

    **** WARNING: Subroutine Jcode::euc_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 71.

    **** WARNING: Subroutine Jcode::euc_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 87.

    **** WARNING: Subroutine Jcode::utf8_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 94.

    **** WARNING: Subroutine Jcode::ucs2_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 101.

    **** WARNING: Subroutine Jcode::utf8_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 124.

    Loading database schema...

    Loading data...
    MT::Author
    1
    2
    **** WARNING: Use of uninitialized value in concatenation (.) or string at mt-db2sql.cgi line 92.


    An error occurred while loading data:

    SQLエラーが発生しました: mt_author.author_type may not be NULL(1) at dbdimp.c line 401

    ネットを調べてまわり、author_typeの記述が消えている?と
    思ったのですが、htmlがやっと少しわかるようになってきた程度なので、
    ここからどうしたらいいのか、さっぱりわかりません。
    エラーが出た状態で、もう一度作り直そうかとも思ったのですが、
    今後このエラーがどういう風に響いてくるのか、と思うと怖くなって
    しまいました。
    アドバイスいただけませんでしょうか。よろしくお願いします。

  56. mt-db2sql.cgiについてはSixApartにご相談ください。

    おそらくmomoさんのMTではBerkeleyDBの中のログインユーザーかコメンターに関わるレコードの一部に障害があります。mt-db2sql.cgiの92行目の直前に以下の行を加えると無事変換できるかもしれませんが、その結果に責任は持てません。

    $obj->type ||= 1;

    また、後半の意味が分かりません。変換に失敗したのならBerkeleyDBを使い続ければよいだけです(mt-db2sql.cgiもmt-db-convert.cgiもオリジナルのDBには変更を加えません)。逆にうまく変換できていないのに変換後のDBを使うことはできません。

  57. わかりにくい説明にもかかわらず、すぐにお返事くださいまして、
    本当にありがとうございました。
    しかも、コピベするwarning文を間違えていますね・・・。
    本当に失礼いたしました。

    最初は、mt-db2sql.cgiで変換を試みたのですが、
    上のようなwarningが出て挫折。(上のwarning文は、このときのものです。)
    いろいろ探していて、こちらに行き当たったので、
    mt-db-convert.cgiも試みましたが、
    上に書き込みしたものと全く同じwarningが出ました。

    mt-db2sql.cgiの92行目に教えていただいた一文を付け加えて
    実行してみましたが、別のエラーが出てしまいました・・・。

    後半の意味、わかりにくくて申し訳ありません。
    私が初めに試してダメだった以下の方法ですが、
    これを試してダメだった何人もの方が、バックアップしてあったデータからコピペして、
    First Weblogの状態から作り直したらしいのです。
    私も(3)まで実行すると、ログインすら出来ず、なんとかログインしても、
    当然中は空っぽです。
    「もう一度作り直す。」というのは、この(3)の状態からバックアップしてあったデータで
    作り直す、ということです。めまいがします・・・。

    ************************************************
    1) mt-config.cgi の63,64行目のコメント(#)を外してdbファイル名を指定。
    ObjectDriver DBI::sqlite
    Database ./db/mtdb
    (2) mt-db2sql.cgi を実行。
    (3) mt-config.cgi の70行目(DataSourceの行)をコメントアウト。
    (4) BerkleyDB用のファイルを削除。
    ************************************************

    不安になったわけは、
    「どうやらauthor_typeに不具合があるみたい?
     そんな状態のまま、MTを使い続けていて大丈夫?」
    ということです。

    また、SQLiteに変換しようと思ったわけは、バークレーが500エラーで再構築できなくなった
    ためです。

    精一杯分かっていただけるように書いてみましたが、またまた、わかりにくかったら
    申し訳ありません。

  58. 今のところ、この症状が私のところでは再現できていません。症状から推測するに、ゴーストログインユーザーみたいなものがMT::Authorのレコードに含まれているみたいです。バージョンアップや普段の使用の過程で生じ得る問題なのでしょう。もしかすると、デフォルトアカウントの「Melody」があればそれを削除することで直るとかいうことはあるかもしれませんが分かりません。

    現在のところSQLiteで新規インストールした環境にExport&Import、コピペで対処するより他ありません。何か分かったらこのエントリーなり新しいエントリーで記事を書くつもりです。

  59. お世話になってます。旧サーバのBerkeleyDBが壊れてしまったので、MTをフォルダ毎別サーバへ移し、新サーバに新規インストールしたMTへデータ転送を試みました。なお、MT31(Berkeley)-->MT32(SQLite)です。
    一回目、

    Loading database schema...
    **** WARNING: DBD::SQLite::db do failed: table mt_author already exists(1) at dbdimp.c line 268 at /home/cgiuser/z3000155/public_html/MT/mt-db-convert31.cgi line 85.
    An error occurred while loading data:
    table mt_author already exists(1) at dbdimp.c line 268 at /home/cgiuser/z3000155/public_html/MT/mt-db-convert31.cgi line 85.

    と出るので、書き込みに従って転送先のdbファイルを削除し、再度試みると

    Loading database schema...
    Loading data...
    MT::Author
    (0 objects saved.)
    MT::Blog
    (0 objects saved.)
    MT::Category
    (0 objects saved.)
    MT::Comment
    (0 objects saved.)
    MT::Entry
    (0 objects saved.)
    (略)
    Done copying data from DBM to DBI::sqlite! All went well.

    のように完了はしますが転送元のdb(ファイルのパーミションは666)を読んでくれません。心当たりございましたらご教示ください。
    元サーバのBerkeleyDBが復旧しないので、コピペ以外の移行方法を試行錯誤中です。

  60. 元データが壊れているのであれば読めなくてもしかたがないですね。
    no ideaです。

  61. はじめまして、こんにちは。
    こちらのブログの記事を見て、ちょこちょこカスタマイズさせていただいています。
    今回はBerkeleyDBからSQLiteに移行するにあたって、配布されているCGIを利用させていただこうと思いました。
    しかし、どうも設定が上手く行かずに、困っています。
    御教授いただけないかと思い投稿させて頂きました。

    MT3.2使用で、サーバーはロリポップです。

    最初、「Convert」ボタンを押すと3箇所程度エラーが出て、直していくと最終的に下記のエラーから進まなくなりました。

    Loading data...
    MT::Author

    An error occurred while loading data:

    table mt_author has no column named author_api_password(1) at dbdimp.c line 268


    正直どうして良いかわからず、どうしてもSQLite化したかったため、MT3.2を再インストールしました。
    エントリーやテンプレートのバックアップは取ってありましたが、それらを読み込ませることはせず、「投稿者」情報の設定のみを行った状態ででmt-db-convert.cgiを起動させてみましたが、上記と同じエラーが表示されました。
    .dbファイルは途中までだと思いますが、生成されてはいます。

    無事に移行させるためには、どうすれば良いのでしょうか。
    御教授いただければ幸いです。

  62. 後半に関して主旨を理解しようとしています。

    ・今まで使っていた環境とは別にMT 3.2環境を構築し、その際BerkeleyDBを使い、投稿者の設定を行った
    ・その上でmt-db-convert.cgiを使ってBerkeleyDBからSQLiteへのコンバートを行った
    ・そうしたら上記のエラーが起きた

    ということでしょうか。

    エラーメッセージは「mt_authorというテーブルにauthor_api_passwordというカラムがない」と言っていますから、転送元もしくは転送先が古いバージョンのMT用に作られているようです。

    チェックすべき点は二点。

    ・転送先のDBファイルが「存在しない状態」で実行すること。
    ・schemasディレクトリがちゃんとMT 3.2用のものになっていること。

  63. 素早いコメントありがとうございました。

    再びMT3.2を再インストールして、コンバートを行ってみると今度は何事もなかったかのように成功しました。

    エラーが出た状態で、上げてくださった
    ・転送先のDBファイルが「存在しない状態」で実行すること。
    ・schemasディレクトリがちゃんとMT 3.2用のものになっていること。
    はクリアしていました。
    結局、良くわからずに再再インストールをしてみました。
    そしたら、普通にコンバートされたと言う次第です。

    ogawaさんとコンバートソフトとには感謝しています。
    ご迷惑おかけいたしました。
    お忙しい中、御教授いただきましてありがとう御座いました。

  64. 初めまして。スクリプト使わせていただきました。
    少ない記事数で500エラーが出ていたのが、しっかり改善されました。
    どうもありがとうございます。

    ただ1つ気になることがあって、後述の通り、Convert 後の画面の最初に「WARNING」と出ます。
    過去のコメントで、全く同じ「WARNING」メッセージが出てる方もいらっしゃいましたが、変換できているので、無視してもいいのでしょうか?
    お時間ございましたら、ご教授いただけると幸いです。よろしくお願いします。


    Loading database schema...

    **** WARNING: Subroutine Jcode::ucs2_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 56.

    **** WARNING: Subroutine Jcode::euc_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 71.

       ~~~ 中略 ~~~

    Done copying data from DBM to DBI::sqlite! All went well.

    Your recommended setting
    -------------------------------------

  65. はい。それはPerlのバージョンが5.8未満である場合か、mt-config.cgiに「UseJcodeModule 1」という行がある場合に生じ得ます。

    特に実害はないはずですが、できればPerl 5.8以降でMovable Typeを使う方が望ましいです。サーバーの都合などでそれが無理な場合には、extlib/Jcode.pmとextlib/Jcodeを適当な名前にリネームしておくとWarningが抑制されると思います。

  66. すばやいご回答をありがとうございます。しかし、
     ・Perlのバージョンは5.8 (ちなみにロリポップ)
     ・mt-config.cgiに「UseJcodeModule 1」という行はない
    状態です。

    で、アドバイス通りに
     ・extlib/Jcode.pmとextlib/Jcodeを適当な名前にリネーム
    しようと思ったら、すでに「Jcode.pm」となっていました。

    実害はない、とは言え、ちょっと気になるところです(^ω^;)

  67. ちょっと調べ直してみました。LolipopのPerlは5.8.0だったと思いますが、5.8.1以降でないとWarningが出るようです。

  68. おっしゃる通りですね~ 仕方ないので、5.8.1になるのを待ちます。
    重ね重ね、ありがとうございます。
    今後ともどうぞよろしくお願いいたします。。。

  69. こんにちは。


    mtの 3.2-ja-2へアップグレード後、再構築時の500エラーが頻繁に出るようになったので、mt-db-convert.cgiを使用して、
    DBをBerkeleyDB → SQLiteへ移行をしました。

    移行作業は問題無く完了致しました。
    再構築も行える様になりました。

    しかし、再構築時に出力される全エントリーのphpファイルが、全てメインページの情報を出力する様になり、以下の表示がされなくなってしまいました。

     ① 追記部(read more)
     ② コメント/エントリー一覧からのコメント/エントリー

    (メインページは過去5件のエントリーを表示する設定、エントリーは追記部を使用しております。)

    移行前後どちらのエントリーでも、同様の現象が起こってしまいます。

    本現象の原因/対策に、思い当たることがありましたら、ご教授願います。
    宜しくお願い致します。

    尚、現在は500エラーが出るBerkeleyDBに戻しております。

    レンタルサーバはロリポを使用しております。

  70. ロリポップ鯖でMT 3.2-ja-2を使っています。
    MySQLが重いようなので、SQLiteに移行しようと思い、こちらのmt-db-convert.cgiを使わせていただきました。
    cgiの動作自体は最後まで完了し、移行してみたのですが、
    個別エントリーにトラックバックデータが関連づけられていない状態となりました。
    トラックバックデータそのものは存在するのにそれぞれのエントリーにはトラックバックがついていないものとして認識されるような状況になってしまいました。
    もしかしたら、3.2と3.2-ja-2では微妙に挙動が違うのかもしれません。
    現在はMySQLに戻しております。
    以上ご報告でした。

  71. akiさんも松永さんもほぼ同様の症状に思えます。
    mt-check.cgiを実行したときに表示されるDBD::SQLiteのバージョンを教えてもらえないでしょうか。

  72. 違いました。松永さんの件に関しては私の方で再現でき、結果として大きめのバグを発見しました。mt-db2sql.cgiにも共通っぽい感じです。

    0.20というバージョンをリリースしましたのでこちらをお使いください。

  73. 素早い対応ありがとうございます!
    おかげさまでうまくいきました。
    ロリポップのMySQLで500エラーばかりだったのが、SQLiteにすると本当に軽くなっています。
    ありがとうございました!

  74. こんばんは。akiです。

    mt-check.cgiを実行したところ、下記が表示されました。

    DBD::SQLite
    サーバーには、DBD::SQLiteがインストールされています。(バージョン: 1.08)

    ですが、結局mtを最初からインストールし直し、エントリー、テンプレート等をエクスポート→インポートで、正常に動くようになりました。

    私の何かしらのカスタマイズに、誤りがあったのかもしれません。


  75. こんにちは。
    私もエントリー数増加に伴う500エラーに悩みこちらのサイトにたどり着いたものです。レンタルサーバーはファーストサーバで、やはりBerkeleyDB使用だったのでサポートされているSQLiteに乗り換えようとしました。Perlのバージョンを(レンタルサーバの仕様上必要だったので)5.0から5.8.5のほうに切り替え、このページにある「mt-db-convert.cgi」を使わせていただいたのですが、以下のようなエラーが出てしまいました。上記33番(10/15のFujinoさん)と同じようなメッセージなので同じような回答をいただくことになってしまうのかもしれないのですが・・・藁をもすがる想いで書きました。バックアップは取ってあったので今は元に戻った状態ですが、何とかエラーが出ないようにしたいので、対処法を教えてください。
    どうぞ宜しくお願いいたします!

    **** WARNING: Bareword "SQL_DATETIME" not allowed while "strict subs" in use at /virtual/www/cgi/mt/lib/MT/ObjectDriver/DBI.pm line 469.

    **** WARNING: Bareword "SQL_TYPE_TIMESTAMP_WITH_TIMEZONE" not allowed while "strict subs" in use at /virtual/www/cgi/mt/lib/MT/ObjectDriver/DBI.pm line 473.

    **** WARNING: Bareword "SQL_TYPE_TIMESTAMP" not allowed while "strict subs" in use at /virtual/www/cgi/mt/lib/MT/ObjectDriver/DBI.pm line 475.

    **** WARNING: Bareword "SQL_BLOB" not allowed while "strict subs" in use at /virtual/www/cgi/mt/lib/MT/ObjectDriver/DBI.pm line 493.

    **** WARNING: Bareword "SQL_CLOB" not allowed while "strict subs" in use at /virtual/www/cgi/mt/lib/MT/ObjectDriver/DBI.pm line 495.


    An error occurred while loading data:

    Unsupported driver MT::ObjectDriver::DBI::sqlite: Compilation failed in require at /virtual/www/cgi/mt/lib/MT/ObjectDriver/DBI/sqlite.pm line 14.
    BEGIN failed--compilation aborted at /virtual/www/cgi/mt/lib/MT/ObjectDriver/DBI/sqlite.pm line 14.
    BEGIN failed--compilation aborted at (eval 7) line 1.

  76. DBD::SQLiteが正常にインストールされていないように見えます。

    別ディレクトリに、SQLiteを使って新規インストールすることはできるのでしょうか。

  77. 小川様
    すぐに素早いご返事をいただいていたのですね。
    すみませんその後すぐ外出してしまったもので・・・

    >DBD::SQLiteが正常にインストールされていないように見えます。

    心当たりが見つかったので、もう1度最初から冷静にやってみます。
    また壁にぶつかったらお願いします。
    ありがとうございました。

  78. はじめまして。
    500エラーが毎回出てしまい、対処法ということでこちらのスクリプトを知りました。

    サーバはロリポップです。
    mtの 3.2-ja-2へアップグレード後、再構築時の500エラーが頻繁にでるようになったので
    mt-db-convert.cgiを使用して、DBをBerkeleyDB → SQLiteへ移行しようと試みました。


    MT::Comment
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    An error occurred while loading data:

    SQL繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: out of memory(1) at dbdimp.c line 401


    サーバの空いてる時間がいいのかといろいろやりましたが、どの時間帯でも必ず出てしまいます。
    おそらく迷惑コメントが多すぎてダメなのかもしれませんが、500エラーが出てしまい
    現状管理画面からも消すこともできません。もう、本当にどうすればいいのか・・・。
    最悪コメントは捨てようと思い、commet.dbを削除してコンバートしましたが
    今度はfileinfo で止まってしまいました。こちらは全体に関わっているのでしょうか?

    スクリプトではなく本体の問題だとは思うのですが、よい方法があれば
    ご教授願いませんでしょうか。よろしくお願いいたします。

  79. 75で質問させていただいたものですが、心当たりを修正してやってみましたが、やはりできませんでした。

    >DBD::SQLiteが正常にインストールされていないように見えます。

    についてはmt-check.cgiで見てみると次のように表示されています。

    DBD::SQLite
    サーバーには、DBD::SQLiteがインストールされています。(バージョン: 1.08)

    >別ディレクトリに、SQLiteを使って新規インストールすることはできるのでしょうか。

    というのは、新たに別ディレクトリに「mtを」新規インストールするということができるかということでしょうか?

    とりあえず、今回の環境とやってみた操作を書いてみますので何とかもう1度チェックしていただけないでしょうか?

    <環境>

    ・レンタルサーバ=ファーストサーバ
    ・Perlのバージョン=当初は5.0.4、今は5.8.5
    ・現状はBerkeleyDBを使用中
    ・SQLite=上記のように「1.08」がインストールされている(はず)

    <操作内容>

    ・転送先ディレクトリとして現状「BerkeleyDB」用に作ってあるDataSourceのフォルダ「/Virtual/www/cgi/mt/db」の中に「sqlite」というフォルダを作成

    ・mt-db-convert.cgiをmt-config.cgiと同じディレクトリに置いてパーミッションを755に変更したうえで、ブラウザ上でアクセスし、

    1.「Source DB Configuration」に転送元の情報を入力

     「Object Driver」⇒「BerkeleyDB」
     「DataSource」⇒「/Virtual/www/cgi/mt/db」を入力

    2.「Destination DB Configuration」に転送先の情報を入力

     「Object Driver」⇒「SQLite」を選択
     「DataBase」⇒「/Virtual/www/cgi/mt/db/sqlite」を入力

    3.convertをクリック

    以上です。すみませんがどうぞ宜しくお願いいたします。

  80. ねこのさん:
    comment.dbを削除してしまうのは乱暴だと思いますが、fileinfo.dbの方は構わないと思います。MT 3.2ではまったく使っていませんから。

    ミニサッカーおじさんさん:
    SQLiteのDatabaseに指定するのは「ファイル」です。ディレクトリを指定してはいけません。

  81. 79.のミニサッカーおじさんです。

    たびたびすみません。

    >SQLiteのDatabaseに指定するのは「ファイル」です。ディレクトリを指定してはいけません。

    すみません、では例えば「virtual/www/cgi/mt/sqlite」というディレクトリの中に「mt」というファイル名のデータベースを作りたい場合はどのように指定すれば良いのでしょうか?
    またその場合空の「sqlite」というディレクトリを用意しておけば、「mt」というデータベースファイルは自動的に作成されるのですか?

    これでダメなら前にご指摘いただいた、

    >別ディレクトリに、SQLiteを使って新規インストールすることはできるのでしょうか。

    をやってみようと思います。

    何度もスミマセンが宜しくお願いいたします。


  82. 指定するファイルはあらかじめ存在しなくてもよいのです。

  83. 81.のミニサッカーおじさんです。

    早速のご返事ありがとうございます。
    では、81.の例では、DataBase欄には「/virtual/www/cgi/mt/sqlite/mt」と入力すれば良いのですか?
    最後の「mt」には拡張子とかは要らないですか?
    素人丸出しですみません・・・

  84. 特に必要ありません。SQLiteが作るのは指定した名前のファイルだけなので、自分で最も分かりやすいと思う名前を付けるとよいでしょう。

  85. はじめまして。
    何度やっても
    Loading database schema...


    An error occurred while loading data:

    table mt_author already exists(1) at dbdimp.c line 268 at mt-db-convert31.cgi line 85.

    という表示になってしまいます。
    あれこれ調べたのですがもう何がなんだか状態になってしまっています。
    すみません。

  86. すみません、先ほど投稿したのですがmt-db-convert.cgiではなく、mt-db-convert31.cgiで作業をしていました。
    (MT 3.1xの場合にはmt-db-convert31.cgi)←この文を3.2も該当すると勘違いしました。
    初歩的なミスでした。
    申し訳ありませんでした。

    おかげで無事作業が終わり、あれほど出ていたエラーもなく、再構築できております。
    ありがとうございました。

  87. はじめまして。

    最近エラーが出ていたMySQLからSQLiteへの移行にスクリプトをお借りしました。
    はじめ何度かエラーが出てしまいましたが、無事に移行できました。
    ありがとうございました。

  88. Ogawaさま

    スクリプト使わせていただきました。
    見事に500エラーが無くなってスッキリです。

    上の方の

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

    というエラーに私もなったのですが、DataBase覧の末尾に「sqlite.db」とファイル名まで指定したらスンナリ行きました。

  89. 75,79,81,83で質問させていただいた者です。

    結局いろいろ教えていただいた正しいと思われる方法で挑戦しましたが失敗しました。
    そこで、MTを完全にアンインストールし、再インストールを図りました。
    mt-config.cgiのデータベースの設定を最初からSQLite仕様に書き換え、MTディレクトリ内ファイルをすべてアップロードしてmtのURLにアクセスしたところで、「ログイン」をクリック、「Movable Typeへようこそ」の画面で「インストールを続行」をクリックしたところ、しばらくしてから下記のようなエラーメッセージが現れました。

    インストール中にエラーが発生しました: ログインできません。
    at lib/MT/App/Upgrader.pm line 315.

    が、mt.cgiにアクセスしてみるとログイン画面が現れたのでそのまま設定作業を続行し、TypeKeyを入力、ブログを新規作成してバックアップを取っておいたエントリーやテンプレートをコピーして再構築すると元通りになり(データベースはきちんと思い通りのところに作られていました)、新規投稿もできますし今のところ順調に動いているように見えます。
    上記のエラーメッセージは無視してこのまま運用して大丈夫でしょうか?

    mt-db-convert.cgiに関する質問から離れてしまってすみません。ただSixApartのサポートでは質問ができなくなっているようなので・・・
    宜しくお願いいたします。

  90. 何となく予感ですが、インストールする際にすでに初期化されたDBファイルが存在しているのではありませんか。インストール前にはDBファイルは存在しないか、サイズ0でなければなりません。

  91. 過去ログも読みましたが、同じ現象の方が居ませんでしたので
    書かせて頂きます。

    現在ロリポップでMT3.2-jaをMySQLで使用しておりますが
    500エラーが多いので、SQLiteに転向しようと考えて
    mt-db-convert.cgiを使わせていただいた結果、コンバートで
    以下のエラーが表示されております。

    Loading data...
    MT::Author

    An error occurred while loading data:

    No ObjectDriver defined at lib/MT/Object.pm line 143.

    lib/MT/Object.pmの該当部分を見ますと、以下の表示になっていました。

    sub _mk_passthru {
    my($method) = @_;
    sub {
    my($this) = $_[0];
    die "No ObjectDriver defined" unless defined $DRIVER;
    my $class = ref($this) || $this;
    if (wantarray) {
    my @result = eval {
    my @rc = $DRIVER->$method(@_);
    @rc or return $this->error( $DRIVER->errstr );
    return @rc;

    対処法が判らないため、現在保留の状態です。
    具体的な対策がお判りでしたら、ご教示下さい。

  92. 具体的な設定情報もなしにアドバイスはできません。

    MySQLのパスワードを正しく入力しているかどうか、SQLiteのDBファイルを正しく入力しているかどうか(ファイルを指定しているか、書き込めないディレクトリ中のファイルを指定してないかなど)、確認してください。

  93. 大変失礼致しました。不備な書込みで申し訳ありませんでした。
    しかしお答えの中に既に正解がありました。

    MySQLのパスワードが抜けておりました。
    それを記入してコンバートしたら成功致しました。
    新規の書込みも正常に表示されております。
    ご迷惑をかけましたことをお詫びして、お礼を申し上げます。

  94. 素晴らしいスクリプトの配布、ありがとうございます。
    各種調べて、やっと、Convertできる!と思ったのですが、

    78の方と同じエラーのようです。

    MT::Comment
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    An error occurred while loading data:

    SQL繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: out of memory(1) at dbdimp.c line 401


    コメントを捨てるのはやぶさかでないのですが、DBからファイルごと削除するのには抵抗があり、目下悩んでおります。

    よろしくご教授いただければ幸いです。

  95. はじめて投稿させていただきます。

    多くの皆様と同様、
    500エラーが毎回出てしまい、
    対処法ということでこちらの掲示板にとどりつきました。

    サーバはロリポップです。
    mt-db-convert.cgiを使用して、
    DBをBerkeleyDB → SQLiteへ移行しました。

    以下のようにメッセージが出て成功したと思っています。
    長くて申し訳ありません。

    ************************************************
    mt-db-convert.cgi($Rev: 173 $): Converting your MT data between DB engines (for MT 3.2)

    Loading database schema...

    Loading data...
    MT::Author
    .
    (1 objects saved.)

    MT::Blog
    .....
    (5 objects saved.)

    MT::Trackback
    .......... .......... ...
    (23 objects saved.)

    MT::Category
    .......... .......... .......... .......... .......... ...
    (53 objects saved.)

    MT::Comment
    .....
    (5 objects saved.)

    MT::Entry
    .......... .......... ....
    (24 objects saved.)

    MT::IPBanList

    (0 objects saved.)

    MT::Log
    .......... .......... .......... .......... ......
    (46 objects saved.)

    MT::Notification

    (0 objects saved.)

    MT::Permission
    .....
    (5 objects saved.)

    MT::Placement
    .......... ........
    (18 objects saved.)

    MT::Template
    .......... .......... .......... .......... .......... .......... .......... .......... ..........
    (90 objects saved.)

    MT::TemplateMap
    .......... .......... .....
    (25 objects saved.)

    MT::TBPing

    (0 objects saved.)

    MT::Session
    .....
    (5 objects saved.)

    MT::PluginData

    (0 objects saved.)

    MT::Config
    .
    (1 objects saved.)

    MT::FileInfo

    (0 objects saved.)


    Done copying data from DBM to DBI::sqlite! All went well.

    Your recommended setting
    -------------------------------------
    # DataSource /home/sites/lolipop.jp/users/lolipop.jp-dp02121101/web/cgi/mt/./db
    ObjectDriver DBI::sqlite
    Database ./db/sqlite.db
    -------------------------------------
    ************************************************
    その後、mt-config.cgiを
    上記recommendのように、バークレーをコメントアウトし、
    sqliteのコメントをはずしました。(recommendと同じ内容にしました)
    ************************************************
    ※ちなみに、前のDBは削除していません。

    ここまではいいのですが、
    その後の動きがおかしくて、
    アドバイスいただけないかと投稿いたしました。

    その後、
    カテゴリーの新規追加や、
    エントリーを修正して保管の操作をするごとに、

    http://xxx.com/cgi/mt/mt.cgi

    のアドレスページになって、ページが見つかりません。
    となってしまいます。

    再び、MT管理画面に戻ると、実施して操作は反映されており、
    再構築も上手く行くのです。

    何か、お気づきの点があればで結構ですので、
    アドバイスいただければと思います。
    よろしくお願いいたします。

  96. 症状の説明がよく理解できないのですが、mt-config.cgiのDatabase欄は、「フルパスで」指定する必要があります。

    /home/sites/lolipop.jp/users/lolipop.jp-dp02121101/web/cgi/mt/db/sqlite.db
    とか何とかそんな感じに。

  97. 95. の投稿者です。

    誠に申し訳ありませんでした。
    別の(基本的な)問題でした。
     
    上手くいきました。

    それにしても、すばやいレス。ありがとうございます。

    こういうサイトは本当にありがたいです。

  98. こんばんわ。

    SQLite から MySQL への移行に失敗してしまったため、ネットで検索したところ、こちらでMTデータベースの相互変換CGIスクリプトが提供されていたので、さっそく使わせていただきました。

    結果、何のトラブルもなく無事移行が完了しました。
    ありがとうございます。

  99. 初めまして。いつも有効な情報が満載でいろいろと助けられております。

    この度、MySQLからSQLiteへのコンバートを試みたのですが
    コメントをコンバートするところで停止してしまいました。

    MT::Comment

    An error occurred while loading data:

    Statement has no result columns to bind (perhaps you need to successfully call execute first) at lib/MT/ObjectDriver/DBI.pm line 52.
    at mt-db-convert.cgi line 96

    コメントにコンバートできないものが含まれていたということなのでしょうか?
    お忙しいところ恐れ入りますが、ご教授いただけますでしょうか。
    よろしくお願いいたします。

  100. 小川さん初めまして。
    素晴らしいスクリプトお借りしました。難なくMySQLへの移行ができました。ありがとうございました!!

  101. 99番で質問した者です。
    いろいろ調べてみましたところ、大量にたまったスパムコメントを削除し
    無事移行することができました。
    何度かエラーにはなりましたが、簡単な手順で移行できてホッとしております。
    ありがとうございました。

  102. raizoさん:
    うまく動いてよかったですね。

    コメントの件数が多い場合にうまくコンバートできないことがある件については、私のところで現象が再現できていないこともあり、解決方法が見出せていません。コメントスパムを削除してなるべくコメント件数を減らすのが、場当たり的ではありますが、ひとつのやり方でしょうね。

  103. 小川宏高様
    はじめて投稿させていただきます。
    mt-db-convert.cgiを使わせて頂いております。
    ありがとうございます。
    BerkryDBからMySQLへの変換を試みておりますが
    変換の途中で下記のエラーが出ます。
    MT::Template
    .......... .......... .......
    An error occurred while loading data:

    SQLエラーが発生しました: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\n \'(&e

    しかし、Movable TypeでLoginできますし、phpMyAdminを見ても
    データベースに18個のテーブルができています。

    エラーが出ている以上、正しい状態ではないと思うのですが、
    上記のエラーの意味についてはWeb上でもはっきりした解説が見つかりませんでした。
    なにか、お気づきでしたら教えていただけませんでしょうか。
    環境は下記の通りです。
    WindowsXP
    Apache2.0.55.0
    Movable Type 3.2
    mt-db-convert.cgi
    MySQL4.0.26
    Perl5.8.8.817

    よろしくお願いいたします。

  104. はじめまして。
    BerkeleyDB→SQliteの移行をmt-db-convert.cgiにて、試みています。
    コンバートしようとすると次のようなエラーメッセージがでます。

    An error occurred while loading data:

    SQL繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: mt_comment.comment_blog_id may not be NULL(1) at dbdimp.c line 401

    何か解りましたら、アドバイス頂けると助かります。

  105. おかげさまでSQLiteに移行することができました。
    ありがとうございます。aran.

  106. 始めまして、私も 500エラーで困っていまして
    ここに辿り着きましたが
    mt-db-convert.cgi はどこでDLさせて頂けるのでしょうか?
    宜しくお願いします。

  107. http://as-is.net/wiki/MT_Database_Converter/ja
    からダウンロードできませんか。

  108. 小川様、こんな便利なものを作っていただいて本当にありがとうございます。
    ロリポップを使っているのですが、再構築単位を40から5に変えてもエントリー投稿時に500エラーがたびたび出て、CGIのことも何もわからないので何がいけないのかわからず、すっかり困り果てていました。SQLiteに移行するのも、設定の間違いとかでうまくいかなかったらどうしようかと何日も悩んでおりました。Convert.cgiのおかげでこんなあっという間に移行できて、データも元のまま使えるなんて夢のようです。ひと言お礼を申し上げたく、コメントさせていただきました。

  109. 初めまして。壱さんのサイトから来ました。
    SQLiteを導入しようかと。思って・・・
    そしたら・・・このようなメッセージが。。。↓

    mt-db-convert.cgi($Rev: 173 $): Converting your MT data between DB engines (for MT 3.2)

    Loading database schema...

    **** WARNING: Subroutine Jcode::ucs2_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 56.

    **** WARNING: Subroutine Jcode::euc_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 71.

    **** WARNING: Subroutine Jcode::euc_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 87.

    **** WARNING: Subroutine Jcode::utf8_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 94.

    **** WARNING: Subroutine Jcode::ucs2_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 101.

    **** WARNING: Subroutine Jcode::utf8_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 124.

    Loading data...
    MT::Author
    .
    (1 objects saved.)

    MT::Blog
    .
    (1 objects saved.)

    MT::Trackback
    .......... .......... ........
    (28 objects saved.)

    MT::Category
    .......... ..........
    (20 objects saved.)

    MT::Comment
    .......... .......... .......... .......... .......... .......... .......... ..
    (72 objects saved.)

    MT::Entry
    .......... .......... ........
    (28 objects saved.)

    MT::IPBanList

    (0 objects saved.)

    MT::Log
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .......... .......... .......... .......... .....
    (245 objects saved.)

    MT::Notification

    (0 objects saved.)

    MT::Permission
    .
    (1 objects saved.)

    MT::Placement
    .......... .......... ........
    (28 objects saved.)

    MT::Template
    .......... ........
    (18 objects saved.)

    MT::TemplateMap
    .....
    (5 objects saved.)

    MT::TBPing

    (0 objects saved.)

    MT::Session
    .......... .......... .......... .......... .......... .......... .......... .......... .......... ..........
    .........
    (109 objects saved.)

    MT::PluginData
    .....
    (5 objects saved.)

    MT::Config
    .
    (1 objects saved.)

    MT::FileInfo

    (0 objects saved.)


    Done copying data from DBM to DBI::sqlite! All went well.

    Your recommended setting
    -------------------------------------
    # DataSource //home/sites/lolipop.jp/users/ciao.jp-pig-family/web/cgi/mt/db
    ObjectDriver DBI::sqlite
    Database //home/sites/lolipop.jp/users/ciao.jp-pig-family/web/cgi/mt/sqlite.db
    -------------------------------------

    なにが変なのかわからないので。。。
    すみませんがアドバイスお願いいたします。
    (´・(●●)・)(o´_ _)oペコリ
    サーバーはロリポップです。

  110. そのメッセージはとりあえず気にしないでください。MT 3.2では、Perl 5.8.1以降でない場合に必ず表示されます。以前、私もロリポユーザーでしたが、そのときは5.8.0でした。そのままのバージョンだとするとWarningが表示されるだろうなと思います。機能には問題ありません。

  111. さっそくお返事ありがとうございます。
    (´・(●●)・)(o´_ _)oペコリ

  112. こんばんわ。
    SQLiteの書き換えが終ったんですけども、
    mt.cgiを実行した際に、「ブログを始める前に、データベースを初期化してインストール作業を完了する必要があります。」というメッセージが
    表示されました。
    Okをすると、前のデータとかは全て削除されてしまうんですか?
    (どこかで拝見したことがあるんですけども、バックアップをという風に書いてありました。)

    お忙しいところ申し訳ないんですけども。。。
    お返事よろしくお願いいたします。

  113. Ogawa様

    スクリプト使わせて頂きました。
    おかげさまでエントリーのエラーから開放されました。


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

    というエラーに私もなったのですが、DataBase覧の末尾に
    「・・・・・・db/sqlite.db」とファイル名まで指定し成功しました。

    ありがとうございました。

  114. >feiさん

    mt-db-convert.cgiによってコンバートされたDBを指すように、mt-config.cgiを設定する必要があります。おそらくそうなっていないために、mt.cgiが新しいDBを作ろうとするのでしょう。

  115. ちょっと複雑に見えるのですがこちらでコンバートしたら下記のようになってしまって・・・。

    ご教授願えたら幸いです。

    サーバはロリポップです。
    mtは 3.2-ja-2です。

    ちょうどMt4i(2.1β8)
    http://hazama.nu/pukiwiki/?MT4i
    を導入しうまくいってたところへ、欲をだしモブログ
    http://moblog.uva.ne.jp/
    の導入をしたところでカテゴリー再構築時の500エラーが頻繁にでるようになってテストエントリーが消せなくなったので探していたらここにたどり着きました。

    もともとのエントリー数は100ちょっとでした。

    mt-db-convert.cgiを使用して、DBをBerkeleyDB → SQLiteへ移行しようとすると最初はうまくいかず
    DBの内容をバックアップにとってDBファイルを空にし
    コンバートすると、Perlの警告は出るものの、無事終了!のサインが出て、ほっとしたのですが・・・

    MTにログインできなくなってしまい

    仕方なく初期設定ののネームとパスで何とか入りましたが
    データは最初からやり直しでした。ログが残っていませんでした。

    でもサーバー上にはdbのファイルの中にsqlite.dbがつくられサイズが1190912ほどあります。

    消したいエントリはそのままで、WEB上
    http://mizu.littlestar.jp/blog/
    では反映されてるように見えますが、新規投稿が反映されません。

    モバイル
    http://mizu.littlestar.jp/cgi-bin/mt/mt4i.cgi?id=1
    では新規投稿だけを反映しています。以前のログが反映されません

    なおチェックCGIでみると
    http://mizu.littlestar.jp/cgi-bin/mt/mt-check.cgi
    このような結果でした。

    チェックCGIにあるように足らないのを補充するべきなのかどうか
    それとももうダメになってしまったのか・・・

    教えていただきますでしょうか?

  116. お世話になっております。
    サーバーのメモリ不足に悩まされ、Berkeley DBからSQLiteへの移行にmt-db-convert.cgiを使わせていただこうとしていますが、以下のようなエラーが出ています。他にこれが出た方がいらっしゃらないようでしたが、どんな原因が考えられるものでしょうか? MTは3.32j、サーバーは学校の環境です。
    ---

    mt-db-convert.cgi($Rev: 234 $): Converting your MT data between DB engines (for MT 3.3)

    Loading database schema...


    An error occurred while loading data:

    disk I/O error(1) at dbdimp.c line 398 at mt-db-convert.cgi line 93.

  117. SQLiteのDBファイル名を指定しているかと思いますが、そのファイルが書き込めないということでしょう。その親ディレクトリのパーミッションを確認してください。

  118. Ogawa様
    さっそくのご返答をありがとうございます。
    それが、エラー後に確認すると、SQLiteのDBファイルは指定したファイル名のとおりに作成されているようなのです。親ディレクトリのパーミッションももちろん書き込み可になっています。

    因みに、もとのBerkeleyDBのdbディレクトリにあるファイルの容量は合計33MByteくらい、作成されているSQLiteのDBファイルの容量も、偶然かどうか分かりませんが、ほぼ同じ33MBです。SQLiteのDB構造をよく理解している訳ではないのですが、おそらくデータは全部書き出しているのではないか、と推測しています。

    なかなかエラーの原因が思いつきません・・・。手掛かり、アドバイスを頂けましたら幸いです。

  119. んー、エラーが出ている93行目というのは、移行先の新規に作られたDBファイルにスキーマを読み込む部分です。もしこの部分でエラーが起きているのならば、その後の手続きでSQLiteのデータベースにBerkeleyDBの情報がコピーされることはあり得ません。

    ですので、SQLiteのデータベースが33MBもあるのだとすると、一旦は変換に成功したSQLiteデータベースファイルに対して、上書きコピーしようとしているように見えます。

    当然のことですが、転送先のSQLiteデータベースファイルは予め存在していてはいけません。

  120. すみません、ファイルサイズは私の勘違いでした。ファイルサイズだと思っていた33554596(ls -lで出てくる数字)はファイル所有者のuser id(デーモンプロセスだと思います)で、ファイルサイズは0です。

    からっぽのファイルを削除して再度実行すると、やはり同じエラーが出てサイズ0のファイルが出来ています。これはどう考えたらよいのでしょうか・・・?

  121. ちょっと調べてみたのですが、disk I/O error(1) at dbdimp.cというのは、DBファイルを読んだり書いたりもういたるところで発生し得ます。なので原因を特定するのは難しいです。

    私から言えるのは、
    (1) そもそもディスクの空き容量が足りない可能性はないか確認すること
    (2) DBファイルが置かれるディレクトリのパーミッションを確認すること
    (3) DBD-SQLiteのバージョンをなるべく新しいものにすること
    くらいですかね。

  122. ありがとうございます。
    どうやらSQLiteがafs環境ではうまく動かない、というのが原因だったらしく、MySQLを使うことにして無事解決しました。ありがとうございました。

  123. 初めまして、ogawa様。
    現在MySQLを使用しているのですが、SQLiteに変更しようと思い、こちらのCGIを利用させていただきましたところ、以下のようなエラーが表示されてしまいました。

    Loading data...
    MT::Author

    An error occurred while loading data:

    Can't call method "configure" on an undefined value at mt-db-convert33.cgi line 108.


    CGIの方を見てみましたが、108行目の、
    MT::Object->driver->configure;
    の、configureが未定義だと言われているようです。
    どのようにすればいいか、よろしければアドバイスをお願い致します……。

    サーバはロリポップ、MTのバージョンは3.33-jaです。

  124. >configureが未定義だと言われているようです。

    違います。

    MySQLの設定を正しく入力したかどうかを確認してください。

  125. ogawa様のお言葉通り、設定を再度確認し、実行してみたところ無事変換することが出来ました。
    ご迷惑をおかけしてすみません。ありがとうございました!

  126. はじめまして。First ServerでMT3.17J、DB_Berkeleyを使っていますが再構築にあまりにも時間がかかるので、こちらをご紹介いただき、mt-db-converter.cgiを使っています。

    稼動そのものはうまくいったのですが、

    mt-db-convert.cgi($Rev: 233 $): Converting your MT data between DB engines (for MT 3.1)

    Loading database schema...

    Loading data...
    MT::Author
    .
    (1 objects saved.)

    MT::Blog
    .......
    (7 objects saved.)

    MT::Trackback
    (中略)
    .......... .......... .
    (4421 objects saved.)

    MT::Category
    .......... .......... .......... .......... .......... .......... .......... ..
    (72 objects saved.)

    MT::Comment
    (中略)
    .........
    (309 objects saved.)

    MT::Entry
    (中略)
    ...... ..........
    (5090 objects saved.)

    MT::IPBanList
    (中略)
    .......... .......... .......... .......... ......
    (246 objects saved.)

    MT::Log


    と、表示した時点でうんともすんともいわず、その後のメッセージが表示されません。他の方の書き込みを見ている限りでは、

    (**** objects saved.)などと続き、最後に

    Done copying data from DBM to DBI::sqlite! All went well.

    Your recommended setting
    -------------------------------------
    # DataSource //home/sites/うんたら
    ObjectDriver DBI::sqlite
    Database //home/sites/かんたら
    -------------------------------------

    とmt.cfgへの書き換え指示がでるはずなのですが……。これってまだ処理中だからひたすら待て、ということなのでしょうか? エントリー数がエントリー数ですのでとりあえず1、2時間ほと待とうかとは思うのですが、直前までのプロセスが目に見える速さで進んでいたのでちょっとおかしいかなと思い、ご質問させていただきました。アドバイスがあればよろしくお願いします。

  127. ログを一旦削除してからやり直してみては。

  128. おはようございます&お返事ありがとうございます。

    先の書き込みをしてから放置をしつつ昼寝して、二時間ほど放置してみたがやはりそのままだったので三度ほど「ログ削除」→「再起動」を繰り返してみましたが、まったく同じプロセスで、同じ場所で止まってしまいます。FTPで該当フォルダ・ファイルを見てみると、指定したファイル名でSQLiteの21MBほどのファイルは形成されているのですが、タイムスタンプ的にはとまった時点でファイルの構築も止まっているようで、「作業中・逐次ファイル作成中」ということでもなさそうです。

  129. CGIスクリプトの実行をサーバーが一定時間で強制終了させる場合があります。

    手持ちのPCにサーバ環境をセットアップして変換だけ行うなどすれば、レンタルサーバの限定されたリソース上で行うよりは確実に変換できるでしょう。

  130. すばやいご返答ありがとうございます。

    今記事の上の方で似たような症状(#10-#11)が指摘されていることから何となく推測はしていたのですが、やはりDisk I/Oのコンテンションのようですね。統計データを元に、一番サーバが空いているであろう朝早くに再度挑戦してみることにします(後ほどあらためてご報告申し上げます)。

    >>手持ちのPCにサーバ環境をセットアップして変換だけ行うなどすれば、レンタルサーバ
    >>の限定されたリソース上で行うよりは確実に変換できるでしょう。
    確かにこれが一番確実なのでしょうが、当方にはその技術も設備も無いのです(涙)。

    データそのものが1GB超えているのとデータの性質上、第三者にお願いするわけにもいかないですし……とほほです。

  131. 結局朝方に何度かトライしてみましたが、同じような結果しか出ませんでした(哀)。知人にコンバートができないかどうか依頼をしてみることにします。進展がありましたらまたご報告申し上げます(3.17でのmt.cfgの設定がサーバ管理会社の公式サイトには掲載されていないので、まずはサーバ管理会社からの回答待ち)

  132. mt.cfgを再度チェックし、問題と思われる行を削除したところ、無事再構築ができました! これからどれだけ高速化したのか確かめ、今件をレポート化したいと思います。

    度重なる質問に親切にお答えいただき、まことにありがとうございました。厚くお礼申し上げます。

  133. 再度ご報告です。サーバーには複数のブログを設置しているのですが、どうやらエントリー数最大の、ID2のブログのデータがうまくコンバートできていないようで、そのブログだけ再構築ができない状態になっています。現在データをBerkeley DBに戻して運用している次第です。

    コンバート画面ではまったく問題なくできていてエラーメッセージもでなかったので首をひねるばかり。むう。4000エントリーもあるのが悪いのかしら。。。

  134. 追加情報として。

    当方のブログ構成とIDは次の通りです。

    ID1:……インスト時につくられるブログ。現在は削除。
    ID2:……再構築できないブログ。エントリ数4000。
    ID3:……ブログ。エントリ数400くらい。問題なく運用できる。
    ID4:……ブログ。エントリ数200くらい。  〃


    以下同

    やはりID1のブログを削除しているあたりが妖しいのでしょうか?

  135. ID=2のブログはmt.cgiでエントリー一覧を見たりすることはできるのでしょうか?

  136. >>135
    はい。エントリー一覧や、それらの各エントリーの中身も確認できます。また、個別エントリーでおくったトラックバックの一覧も確認できます。

    ですが、新規投稿、既存投稿の修正投稿なども含め、再構築プロセスに入ると処理がそのまま続いて、タイムアウトエラーが出てしまうという状況です。

    サーバ管理会社に問い合わせてみましたが、サーバ側での問題となるようなエラーではないとのことでした。

  137. 推測ですが。各ブログ毎(ID毎)のデータをリンケージしてひとつのSQLiteファイルにする際、ID1以外のブログにおいて直前のIDのブログが存在しないことを想定されていなかったからなのか、ということはありませんでしょうか? 今回当方でデータが正常に作動しなかったID2ブログの場合、直前のID1のブログが存在しなかったため、このようなことになったのではないかと(ID3以降は通常に作動しましたし)。

    となれば、要はID1のところにダミーでブログを作って設置し、そののちにデータをコンバートし、それが終わってからダミーブログを取り外せばいいわけなんですが……新たにブログを設置しても、通し番号で後の方についちゃって、空き番号のID1で構築ができないんですよね。これができれば、スクリプトの検証もできると思うのですけどね。この手法でやってみて、それでもまだトラブルが出るようなら、エントリー数があまりにも多いということでオーバーフロー系のチェック(プログラム上で)に引っかかったのかもしれないということになるのですが。

  138. ちょっと考えにくいですね。

    単に分量が多いのか、変換自体に失敗しているのかどちらかだと思います。3.17と古いバージョンですし、Movable Type側に問題がないとも言い切れません。

  139. なるほど。

    分量が多い場合は仕方が無い(とほほ)として、変換自体に失敗している、ということであれば、条件を変えて(何度か投稿をするたびに)切り替えを試してみます。

  140. BerkeleyDBからの変換で苦労している人が多いようなので、時間があれば、Zipで固めたBerkeleyDBファイルをアップロードしてもらってSQLiteに変換するだけのサービスを作ろうかなと思っています。構想段階ですが。

  141. ID2のエントリーが肥大したブログのみがデータの再構築が出来ないようですので、先ほど……

    (1)Berkeley DB上で「読み出し」機能を用いてID2のエントリーデータを読み出し
    (2)今ツールを使ってBerkeley DBからSQLiteへ移行
    (3)SQLiteにアクセスするようmt.cfgを書き換え
    (4)ID2のエントリーをすべて管理画面上から削除(これはできました)
    (5)書き出し機能を使って(1)のデータを書き出し

    という過程で、強引にデータを移行しようとしましたが、やはり再構築の段階で500エラーが出てしまいます。

    これはもう当方の手には負えないと判断し、残念ですが今回はデータの移行をあきらめました(とほほ)。何か別の手段、あるいはこちらのコンバータ上の改善点がなされれば再度試してみたいと思います。

    とりあえずご報告をさせていただきますと共に、色々とご迷惑をおかけしましたことをお詫び申し上げます。何かありましたらまたよろしくお願いします。

    >>時間があれば、Zipで固めたBerkeleyDBファイルをアップロードしてもらってSQLite
    >>に変換するだけのサービスを作ろうかなと思っています。構想段階ですが。

    とのことですが、コンバート後の作動まで確認が取れているようならお願いしたいですね。もしかすると当方の環境でのみコンバートのミスが生じる……いや、それはないかな。

  142. はじめましてogawaさん。

    ogawaさんのプログラムのおかげで
    movabletypeを3.17から3.33にアップグレードすることができました。
    素晴らしいプログラムと詳しい解説ありがとうございます。

  143. Ogawaさんに感謝しています。
    おかげさまでBerkeleyDBからSQliteへ、何の問題もなく、スムーズに移行できました。
    MTは3.17から3.34にバージョンアップ。
    とても使いやすいCGI本当にありがとうございます。

  144. はじめまして。BerkeleyDBをMT3.33で使用していて、最近、投稿時の500エラーに悩んでいました。
    webを探してここにたどり着いたのですが、無事にSQliteにDB変換することができ、
    500エラーを解消することができました。
    このような有用なcgiがあって助かりました♪

  145. お世話になっております。
    CORESERVERのMySQLが管理がイマイチだったので、SQLiteにカンタンにできました。
    本当に感謝感謝です。

  146. Ogawaさん、はじめまして。
    ▼mt-db-convert32.cgiを実行した結果下記のメッセージが表示されました。
    SQLエラーが発生しました: mt_entry.entry_status may not be NULL(1) at dbdimp.c line 402
    --------------------------------------------------------------------------
    db内のmtdbを削除して数回試みましたが同じでした。

    ■MT:3.2-ja2
    ■サーバー:さくらインターネット
    ■BerkeleyDBからSQliteの移行

    対処法についてご教示下さるようお願い致します。

  147. MTで使っているSQLiteのデータベースにエラーを起こしたため、このプラグインを使わせて頂いて一旦MySQLに変換しようとしています。

    そこで使ってみたのですが、エラーが起こります。

    phpmyAdminにはUSER名とパスでログインできました。データベースはレンサバさんに作ってもらっています。

    mt-db-convert33.cgiに入れる情報なのですが、まず左側にはSQLiteの現在の場所の情報が表示されています。右側にフィルインする情報ですが、

    ・Object Server>MySQL
    ・DataBase>データベースまでのフルパス、単純にデータベースの名前、両方試しました
    ・User/DBpassword>phpmyAdminと同じ
    ・DBhost:今使っているサーバのドメイン部分

    これで実行すると、
    ---
    mt-db-convert.cgi($Rev: 234 $): Converting your MT data between DB engines (for MT 3.3)

    An error occurred while loading data:

    繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆: Host ******com' is not allowed to connect to this MySQL server
    ---
    という答えを返してきます。これを動作させるには、どうする必要があるのでしょうか。もしお解りになりましたら、お返事をいただけますと幸いです。

    初めての書き込みにて長々と失礼いたしました。

  148. DataBaseにデータベース名、DBhostにデータベースサーバのホスト名またはIPアドレスを指定してください。

Post a comment

Remember me?