phpBB3フォーラムをDiscourseへ移行する

こんにちは、

phpBBフォーラム(v3.2.10)を問題なくインポートできました(@gerhard さんをはじめとする皆様、ありがとうございます)…

まあ、完全に問題なかったわけではありません :wink: : トピックに返信がありません。

何かアイデアはありますか?

事前にありがとうございます。

「いいね!」 1

@jmbeuken さん、import_phpbb3.sh を数回実行し、http://yoursite/sidekiq で Sidekiq がジョブを完了したか確認してください。

「いいね!」 3

ありがとうございます。動作しました!

「いいね!」 2

今、正規表現がフォーラムの URL に対してのみ機能することに気づきました。

変換後にこれらが事前に設定されているのを発見しました。

/(viewforum.php\\?)(?:.*\u0026)?(f=\\d+).*/\\1\\2 は完璧に機能しますが、/(viewtopic.php\\?)(?:.*\u0026)?(t=\\d+).*/\\1\\2 は常に 404 エラーを返します。アドレスが変換されず、https://www.mysite.com/viewtopic.php?t=123 のまま残っているためです。

なぜでしょうか?正規表現は同じように見えますし、外部リンクから試しました。

UP! ( :grimacing:)

「いいね!」 2

パーマリンク正規化の正規表現に問題があるようには見えません。正しく選択されているようです。管理画面 > カスタマイズ > パーマリンクで、viewtopic.php?t=123 の形式のパーマリンクが設定されていますか?

「いいね!」 2

こんにちは、Justin さん。いいえ、画像に表示されているものしかありません。

ありがとうございます。

「いいね!」 1

こんにちは、このヒントを教えていただきありがとうございます。私は PHPBB 3.2 の大規模なフォーラム(SQL ダンプ約 1.3GB)を Discourse に移行しているのですが、最初の関門でつまずいてしまったかと思いました!

new_categories を空のリスト、category_mappings を空のオブジェクトとして定義することの実際の効果は何でしょうか?何か悪影響はありますか?

「いいね!」 1

これらの設定は、既存のカテゴリ構造を持つ Discourse フォーラムにインポートする際にのみ有効になります。

「いいね!」 1

こんにちは、

phpBB3 サイトを 2518 人のユーザーとともにインポートしました。
「import_phpbb3.sh」をいくつか実行した後、すべては安定しているように見えます…
ただし、「レベル 0」のユーザーが 1108 人、「レベル 1」のユーザーが 1410 人いることに気づきました。ユーザーを区別する基準は何でしょうか?
そして翌日、「レベル 0」のユーザーが 258 人だけになっていることに気づきました。「クリーニング」はどのように行われたのでしょうか?投稿数が 0 だったから?活動がなかったから?

パスワードの移行を試みました。残念ながら、エラーが多数発生しました(ユーザー名とパスワードが同じ、長さが 9 文字未満など)。そのたびにスクリプトがクラッシュします。phpBB3 側で修正(ユーザーの削除など)を行い、スクリプトを再起動しましたが、あまりにも手間がかかり、中断しました。
エラーが発生した場合に、デフォルトのパスワードを設定する方法はないでしょうか?(Ruby はよくわかりません)

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

「いいね!」 1

パスワードの長さを確認し、削除するか9文字より長くするコードを追加する必要があります(最小長は実際には8文字なので、9文字という指定については確信が持てません)。

「いいね!」 2

@pfaffman さん、ありがとうございます。
すみません、私の意図が明確に伝わっていなかったようです…

phpBB3 インスタンスでは、パスワードの最小長は 6 文字でしたが、数年前に phpBB3 を更新した際に 8 文字に変更しました。
そのため、Discourse のデフォルトである 10 文字未満の長さを持つパスワードが多数存在する可能性があります。

spec/components/validators/password_validator_spec.rb というファイルを直接修正(ハック)できるかもしれないと考えていますが、理解に苦しんでいます…:anguished:

では、また。

「いいね!」 1

試してみることはできますが、それが機能するかどうかは確信が持てません。また、アップグレード時に元に戻されてしまわないようにするには、少し手間がかかります。より簡単な提案としては、短すぎるパスワードはインポートしないことです。おそらく、それらを覚えていないでしょうから。

しかし、他のアイデアをお持ちの方がいるかもしれません。

「いいね!」 1

こんにちは、

インポート中にファイルのアップロードで問題が発生しています:

4497 / 12442 ( 36.1%)  [1122 items/min]  
アップロードの作成に失敗しました: No such file or directory @ rb_sysopen - /shared/standalone/import/data/files/89_d634760ee03ba0148d7a387a19794f90
/shared/standalone/import/data/files/89_d634760ee03ba0148d7a387a19794f90 のアップロードに失敗しました

しかし、そのファイルは存在します:

root@gui2:/var/discourse/shared/standalone/import# ll data/files/89_d634760ee03ba0148d7a387a19794f90
-rw-rw-rw- 1 nwz003 48 125552 Mar  6  2012 data/files/89_d634760ee03ba0148d7a387a19794f90

また、shared/standalone/import/settings.yml には以下が記載されています:

phpbb_base_dir: /shared/standalone/import/data

何かご存知でしょうか?

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

「いいね!」 1

設定で /shared/import/data を実行してみてください。コンテナ内では /var/discourse/shared/standalone ディレクトリが /shared にマッピングされています。

「いいね!」 3

@justin さん、ありがとうございます。それがコツなんですよ :slight_smile:

「いいね!」 4

今、phpBB 3.0.12 のデータベースダンプに対して import_phpbb3.sh を実行した際に以下のエラーが発生しました:

creating user groups
Failed to add user 1 to group 11
PG::NotNullViolation: ERROR:  null value in column "user_id" of relation "group_users" violates not-null constraint

原因は、私の phpBB データベースの phpbb_user_group テーブルに「保留中」のユーザーが存在していたことです(保留中のユーザーとは、グループへの参加を申請しているがまだ承認されていないユーザーのことです)。user_pending1 である行を削除したところ、インポーターはその後正常に処理を続行できました。

「いいね!」 1

phpBB 3.0.12 のインポートに関するもう一つの注意点ですが、初回の実行で投稿をインポートする際に、以下のような大量のメッセージが表示されます:

    65427 / 65812 ( 99.4%)  [2238 items/min]  Parent post 68380 doesn't exist. Skipping 68382: Shuffling an At Start Stack

(「Shuffling an At Start Stack」は、私のフォーラムにある特定のスレッドのタイトルです。)

インポートされた内容を確認するためにアプリを起動して閲覧したところ、各スレッドの最初の投稿のみが取得され、返信は含まれていないように見えました。

どうやら、このインポータはデータベースに対して 2 回目のパス(import_phpbb3.sh を再度実行するだけ)が必要のようです。2 回目を実行すると、欠落していた親投稿がすべて存在するようになり、親が欠落しているというメッセージは表示されなくなりました。

インポータの作成は難しく、問題発生後に正常に再開できる機能を実装することも同様です。それらを両方とも実現されたことに敬意を表します!

「いいね!」 3

それは base.rb または lookup.rb に問題がある可能性を示唆しています。汎用的な JSON インポーターでも同様の問題に気づいたのですが、それはそのインポーター固有の問題だと思っていました。どうやらルックアップ関数が機能していないようです。私の推測では、投稿作成関数が、ルックアップ関数が使用する構造に新しい投稿を追加していないのではないかと思います。

今後 1〜2 日以内に確認してみます。

「いいね!」 1

@pfaffman 私が実施したインポートは試用版でした。今後少なくとももう一度行う予定ですので、数日後にテストできるものがあれば喜んで試します。

「いいね!」 1

どうやら、@topics および/または @posts がトピック/投稿作成者によって更新されていないようです。私のスクリプトでは、ルックアップ関数に依存するのではなく、コード内で TopicCustomField を検索しています。

コードと最近のコミットを確認しましたが、明らかな説明は見当たりませんでした。

「いいね!」 1