vBulletin 4フォーラムをDiscourseに移行する

I know this is a bit of an old topic, but I’ve just completed a comparably sized vb4 migration and am missing a LOT of image attachments, somewhere on the order of 75% of them I’d wager. They are not tombstoned, and all the threads have been rebaked.

Has anyone else dealt with this? How should I go about recovering those images?

Did you see errors when you did the import?

「いいね!」 1

Yes, quite a few ‘Attachment file doesn’t exist’ errors with some ‘Couldn’t find attachment record for post.id=xxx, import_id=xxx’ sprinkled in.

The thing that has me scratching my head is that these are posts that I know have intact attachments, and that those attachments are in the ATTACHMENT_DIR global directory. The threads with missing images are missing ALL the associated images, which seems… not random.

I’m at a loss to find any common factor among the threads/posts with lost images either.

Those messages were your clue that something was amiss. All you can do is diagnose the problem an run the import again.

Every import is a snowflake. I’ve don’t dozens of them. It’s rare that one just works. If you’d like help: Redirecting…

「いいね!」 2

Discourse を試してみたいと思い、当社の大規模な VBulletin データベースを変換するために、このスクリプトを実行してみました。

ユーザーとグループはインポートされましたが、サブカテゴリの処理で何度か失敗しています。

   importing top level categories...
        7 / 7 (100.0%)  [902 items/min]   n]
importing children categories...
Traceback (most recent call last):
        5: from script/import_scripts/vbulletin.rb:942:in `<main>'
        4: from /home/peterb/discourse/script/import_scripts/base.rb:47:in `perform'
        3: from script/import_scripts/vbulletin.rb:84:in `execute'
        2: from script/import_scripts/vbulletin.rb:287:in `import_categories'
        1: from script/import_scripts/vbulletin.rb:287:in `each'
script/import_scripts/vbulletin.rb:289:in `block in import_categories': undefined method `[]' for nil:NilClass (NoMethodError)

UTF-8 エンコーディングやサーバーリソースなど、いくつかの項目を確認しましたが、他に何を確認すべきか見当がつきません。
何かアイデアはありますか?
ありがとうございます。

現在、800 万件の投稿を含む vBulletin のインポートを実行しています。いいね機能(どうやらプラグインまたは修正によるもののようです)と投票機能のサポートを追加しました。

エラーから問題の特定が難しいのですが、おそらく parentid が見つからないことが原因ではないかと推測しています。

以下のコードを修正して、category['parentid'] が nil の場合でも失敗しないようにする必要があると思います。

    parent_category_id: category_id_from_imported_category_id(category["parentid"])
「いいね!」 1

ありがとうございます。再度確認したところ、管理者がカテゴリの「セクション」を作成するために、親IDを存在しない値である -1 に設定していたようです。

「いいね!」 3

うん、解決したみたいだね。そんなことが起きるのはむしろ普通で、例外じゃない。で、次に、データベース側で直すか、壊れたデータベースに対応できるようにコードを直すか、どっちにするか決めなきゃならない。

「いいね!」 3

データ移行ではよくあることですが、どんなスクリプトを見つけても、すべての想定外の事態に対応できるわけではありません。しかも、この作業に充てられる空き時間が深夜しかないのも追い打ちをかけています(これは私のカークラブへの無料提供です)。vBulletin サイトはかなりカスタマイズされているので、他のどんな驚きが待ち受けているか確認してみます。

「いいね!」 4

vBulletin 4 のインポートを処理するスクリプトがあることは理解できますが、すべての URL が新しい Discourse の URL 形式にリダイレクトされることに関する記述は見当たりません。

皆さんはこの問題をどのように対処していますか?また、フォーラムにある外部リンクはどうなりますか?

こちらが該当箇所です:

「いいね!」 3

@RGJ さん、ありがとうございます。しかし、これが実際にどのように機能するのか説明していただけますか?このスクリプトは具体的に何を行っているのでしょうか?Discourse 上で、現在の正しい Discourse インポート URL へのエイリアス URL を作成しているのでしょうか?

Vbulletin の古いドメイン(www.example1.com)を Discourse の新しいドメイン(www.example2.com)に移行する場合、どのようにお勧めしますか?

理想的には、古いフォーラムドメインから新しいドメインへ、301 リライトのリストに基づいてすべての流入トラフィックやリンクをリダイレクトすることだと思われます。そのようなリダイレクト用リライトリストを作成するには、どのようにお勧めしますか?

ドメインを変更する必要はありませんが、変更する場合は以下の2段階のプロセスが必要です。

  1. 旧ドメインからのすべてのアクセスを新ドメインにリダイレクトする
  2. Discourse のパーマリンクが、vBulletin 形式の URL を正しい Discourse のトピックに変換します。

ドメインを変更せず、単に新しい Discourse 設定を指し示すだけであれば、手順 #2 のみで済みます。

「いいね!」 1

Discourse のリダイレクト HTTP ヘッダー(301 または 302)はどうなっていますか?

ドメイン変更がランキングに影響するかどうか、SEO の観点から興味があります。

301 Moved Permanently

パーマリンクという言葉がすべてを物語っています :slight_smile:

「いいね!」 1

実際に確認するには、/admin/customize/permalinks にアクセスしてパーマリンクを作成し、その動作を確認してください。

添付ファイルが完全にインポートされないという問題が発生しています。以前に報告された内容と似ていますが、スクリプトからはエラーは出力されていません。
データベースは小さく(71M)、インポート全体が0分23秒で完了します。


投稿の大半から添付ファイルが欠落しています。
スクリプト内の SQL クエリを vb4 データベースに対して直接実行しましたが、正しいデータが返ってきています。そのため、現時点では問題の原因がどこにあるのかわかりません…

添付ファイルが投稿に直接リンクされていないのですか?スクリプトは投稿内で言及されている画像のみを取得し、単に添付されている画像は取得しないと考えています。

それらをインポートするスクリプトは持っていますが、まだ PR を提出できていません。

はい、pfaffman さんのおっしゃる通りですね。その通りです。
スクリプトがアップロードされ次第、待機しています!

予算があれば教えてください。このインポートが終わったらバージョンを提出するつもりですが、今回はインポート専用のコードを相当量削除する必要があるため、1年前には実現しませんでした…

「いいね!」 1