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

予算はありません。でも、もしかしたら。

「いいね!」 2

インポートスクリプトを実行した際に、この問題に遭遇した方はいらっしゃいますか?

投稿のポストプロセッシング中…
37785 / 48843 (77.4%) キルされました*

プロセスが完了する前に終了してしまいました。フォーラムを読み込むと、インポートされたメッセージは表示されているようですが、正常に完了しなかったため、何らかの問題が生じるのではないかと心配しています。

ご助言をお願いできますか?もしかすると、メモリ不足のエラーでしょうか?スクリプトを再度実行して中断した場所から再開することは可能でしょうか、それとも重複データの再インポートを試みてしまうのでしょうか?よろしくお願いいたします。

スクリプトを再実行してください。データは重複しません。

「いいね!」 3

ありがとうございます、@pfaffman!これでうまくいきました。

「いいね!」 4

こんにちは、
まず、この素晴らしいガイドを作成していただき、ありがとうございます。そこに費やされた労力に感謝しています。

私の問題について
インポートスクリプトを実行する際にデータベースへの接続に問題が発生しています。vBulletin のダンプを格納するために MySQL ではなく MariaDB を使用していることが原因かもしれません。MariaDB が実行されていることは確認済みで、vBulletin のダンプを正常にインポートすることもできます。スクリプト内のユーザー名、ホスト名、パスワードも四重に確認しましたが、依然として接続できません。

何か単純な見落としがあるように感じます。もし方向性を示していただければ、非常に助かります。

使用しているバージョンは以下の通りです。

mysql2 0.5.2
mariadb-server-10.3
discourse master git commit cb8fa46

詳細な説明は以下にあります。

apt-get update && apt-get install libmysqlclient-dev mysql-server-5.7
を実行しようとすると、エラーが発生します。

E: パッケージ 'libmysqlclient-dev' にインストール候補がありません
E: パッケージ 'mysql-server-5.7' にインストール候補がありません

これは理にかなっています。おそらく、これらのパッケージはリポジトリから削除されたのでしょう。

そのため、代わりに以下を実行しました。

apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev

MariaDB はドロップインリプレイスメントとして機能するため、素晴らしいです。マイグレーションスクリプトを実行しようとするまでのすべての手順は問題なく動作しますが、その時点で以下のエラーが発生します。

root@discourse:/src# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'
root:@localhost wants vb4
既存のグループを読み込み中...
既存のユーザーを読み込み中...
既存のカテゴリを読み込み中...
既存の投稿を読み込み中...
既存のトピックを読み込み中...
==================================================
ユーザー 'root'@'localhost' のアクセスが拒否されました
データベースに接続できません。

ホスト名: localhost
ユーザー名: root
パスワード: 
データベース: vb4

スクリプトを編集するか、以下の環境変数を設定してください:

export DB_HOST="localhost"
export DB_NAME="vbulletin"
export DB_PW=""
export DB_USER="root"
export TABLE_PREFIX="vb_"
export ATTACHMENT_DIR '/path/to/your/attachment/folder'

終了します。

権限について

root@discourse:/src# mysql
MariaDB モニターへようこそ。コマンドは ; または \g で終了します。
MariaDB の接続 ID は 59 です
サーバーバージョン: 10.3.17-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab およびその他。

ヘルプを表示するには 'help;' または '\h' を入力してください。現在の入力文をクリアするには '\c' を入力してください。

MariaDB [(none)]> show grants;
+------------------------------------------------------------------------------------------------+
| root@localhost の権限                                                                           |
+------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION                                  |
+------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

ユーザー名とパスワードを何度も二重確認し、さらに手動で設定することも試みました。

「いいね!」 2

少し調べてみたところ、ベースイメージが Ubuntu 16.04 から Debian に変更されたことが、MySQL が利用できなくなった原因であることは確かですが、mysql2 を MariaDB に接続させる方法についてはまだ手探りです。

以前、mysql-dep.template.yml を MariaDB 化する PR を提出しました。何度か使用しています。

パスワードを使用しないようにしているようですが、パスワードの使用をお勧めします。スクリプトはパスワードがあることを前提にしています。

「いいね!」 2

了解しました。パスワードを設定して、それで機能するか試してみます。私の理解では、インポートスクリプトは MariaDB でも動作するはずです。もしそうなら、引き続きトラブルシューティングを進めます。迅速なサポート、ありがとうございます!

@pfaffman それでした!本当にありがとうございます。フォーラムを整理し次第、VB3 版の PR を提出します。誰かの役に立つかもしれませんので。

これは私のテストインスタンスなので、詳細を投稿しても構いません。いずれ削除されますので :slight_smile:

「いいね!」 3

皆様のご協力に感謝します。移行は概ね順調に完了しました。所々に添付ファイルが欠落している箇所がありましたが、全体として非常にうまくいきました。

将来このスレッドを読む方のために、私は Vb3.8.7 から移行しました。

vbulletin.rb 内の SQL クエリをいくつか編集する必要がありました。データベース構造がスクリプトと完全に一致していなかったためです。ただし、非常に近いものでした。進行を優先させるため、カスタムキャプションの機能はあきらめることにしました。

GitHub の差分: File fix other by canyon289 · Pull Request #1 · canyon289/discourse · GitHub

MySQL に代わる MariaDB のインストールには、以下のコマンドを使用しました。

apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev

MariaDB のパスワードを null から値に変更するには、以下のリンクが最も包括的でした。

改めて、このスレッドの皆様、そしてコードやサポートを提供してくれた Discourse のすべてのコントリビューターに感謝してもしきれません。

「いいね!」 5

マイグレーションが完了しました。vBulletin 4 インスタンスから継承されたカテゴリが 2,000 件以上のトピックにすべて割り当てられました。しかし、このカテゴリを削除して、移行されたすべての投稿を「カテゴリ未選択」に戻すことができません。「このカテゴリには 2322 のトピックがあるため、削除できません」というエラーが表示されます。

回避策はありますか?

再移行するか、それらのトピックのカテゴリを変更してください。数が多いため、Ruby のコマンドラインから実行する必要があります。

「いいね!」 1

こんにちは、

この文脈が少しわかりません。

添付ファイルを Discourse インスタンスにコピーしてください(パスについては VB4 の設定を確認してください)。

どなたかお手伝いいただけますでしょうか?

こんにちは、

vBulletin 5 のスクリプトがあることに気づいたのですが、それに関するフィードバックが見つかりません。このトピックの情報は、それにも適用されますか?

ありがとうございます!

「いいね!」 1

スクリプトは非常に同様に動作するはずです。

「いいね!」 1

vB4 のインポートを実行していますが、子カテゴリのインポートで失敗しています。Rails/Ruby の初心者なので、ご辛抱ください。

    Traceback (most recent call last):
        20: from script/import_scripts/vbulletin.rb:943:in `<main>'
        19: from /home/vagrant/discourse/script/import_scripts/base.rb:47:in `perform'
        18: from script/import_scripts/vbulletin.rb:84:in `execute'
        17: from script/import_scripts/vbulletin.rb:293:in `import_categories'
        16: from /home/vagrant/discourse/script/import_scripts/base.rb:403:in `create_categories'
        15: from /home/vagrant/discourse/script/import_scripts/base.rb:403:in `each'
        14: from /home/vagrant/discourse/script/import_scripts/base.rb:422:in `block in create_categories'
        13: from /home/vagrant/discourse/script/import_scripts/base.rb:454:in `create_category'
        12: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/suppressor.rb:48:in `save!'
        11: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:319:in `save!'
        10: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
         9: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:212:in `transaction'
         8: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `transaction'
         7: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
         6: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
         5: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
         4: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `block in transaction'
         3: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
         2: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:319:in `block in save!'
         1: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/validations.rb:53:in `save!'
/home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/validations.rb:81:in `raise_validation_error': Validation failed: Slug is invalid (ActiveRecord::RecordInvalid)

トラブルシューティングのためにいくつかのデバッグ出力を追加しました。カテゴリの slug の値は nil になっています。

create_categories(children_categories) do |category| をループしている間は、カテゴリは有効に見えるようです。base.rbdef create_category から、.save! の直前に optsimport_idnew_category もログ出力しています。関数が期待する値としてはすべて有効に見えます。

以前にこの問題に遭遇したことはありますか?

       37 / 53 ( 69.8%)  [345139 items/min]
category:
{"forumid"=>355, "title"=>"News", "description"=>"RSS Feed", "displayorder"=>6, "parentid"=>205}

Entering create_category...
opts:
{:id=>355, :name=>"News", :position=>6, :description=>"RSS Feed", :parent_category_id=>6}
import_id:
355

new_category:
#<Category id: nil, name: "News", color: "BF1E2E", topic_id: nil, topic_count: 0, created_at: nil, updated_at: nil, user_id: -1, topics_year: 0, topics_month: 0, topics_week: 0, slug: nil, description: nil, text_color: "FFF", read_restricted: false, auto_close_hours: nil, post_count: 0, latest_post_id: nil, latest_topic_id: nil, position: 6, parent_category_id: 6, posts_year: 0, posts_month: 0, posts_week: 0, email_in: nil, email_in_allow_strangers: false, topics_day: 0, posts_day: 0, allow_badges: true, name_lower: nil, auto_close_based_on_last_post: false, topic_template: nil, contains_messages: nil, sort_order: nil, sort_ascending: nil, uploaded_logo_id: nil, uploaded_background_id: nil, topic_featured_link_allowed: true, all_topics_wiki: false, show_subcategory_list: false, num_featured_topics: 3, default_view: nil, subcategory_list_style: "rows_with_featured_topics", default_top_period: "all", mailinglist_mirror: false, minimum_required_tags: 0, navigate_to_first_post_after_read: false, search_priority: 0, allow_global_tags: false, reviewable_by_group_id: nil, required_tag_group_id: nil, min_tags_from_required_group: 1>
    Traceback (most recent call last):
「いいね!」 2

当社の開発者がスクリプトを試しましたが、あまり進められませんでした。コンサルティングの形で、この作業を引き受けていただける方はいらっしゃいますか?

「いいね!」 2

はい、PM を送ってください。

「いいね!」 2

お恥ずかしいのですが、PM(プライベートメッセージ)の送信方法がわかりません。見つけられませんでした。また、直接メールでも結構です。abboud at cedrus dot com までご連絡ください。

インポートに関するご質問:当社の vBulletin ベースのフォーラムには、同じフォーラム内の他の投稿へのリンクが含まれる投稿があります。これらはインポート時に変換されますか?もし変換されない場合、どうなるのでしょうか?削除されてしまうのでしょうか?

「いいね!」 1

現在のバージョンがそれらを再書き込みするかどうかは覚えていません。私が持っているスクリプト(PR を提出する予定のもの)はそれらを修正します。

「いいね!」 2