Flarumからのトピックインポート中にエラーが発生しました(ユーザー、グループのインポートはOK)

みなさん、こんにちは。現在進行中の Flarum から Discourse への移行作業で、どなたかお手伝いいただけないでしょうか。私の知識不足を補うために、かなり無理やり手を加えてきましたが、現在のインポーターが前提としている点(例えばデータベースプレフィックスなど)に基づいて、いくつかのエラーを解決することができました。その結果、カテゴリとユーザーのインポートには成功しました!:partying_face:

しかし、次に本題であるトピックのインポートで問題に直面しています。これはもちろん最も重要な要素の一つです。:grinning_face_with_smiling_eyes: 残念ながら、私が遭遇している特定のエラーメッセージに関する情報は、非常に少ないのが実情です。Meta にはこのエラーに関する古いトピックが一つありますが、回答は得られていませんので、そこから助けを得ることはできませんでした。私の方がうまくいくことを願っています。:grin:

以下が完全なエラーメッセージです。下部の部分が問題の核心のようです。特定された「重複キー値」は非常に曖昧で、手がかりがつかめません。どなたか知見をご提供いただければ、事前に感謝いたします!

An error occurred while loading ./script/import_scripts/flarum_import.rb.
Failure/Error: return exec_without_profiling(*args, &blk) unless SqlPatches.should_measure?

PG::InFailedSqlTransaction:
  ERROR:  current transaction is aborted, commands ignored until end of transaction block
# ./script/import_scripts/base.rb:243:in `ensure in block in all_records_exist?'
# ./script/import_scripts/base.rb:243:in `block in all_records_exist?'
# ./script/import_scripts/base.rb:224:in `all_records_exist?'
# ./script/import_scripts/flarum_import.rb:122:in `block in import_posts'
# ./script/import_scripts/base.rb:874:in `block in batches'
# ./script/import_scripts/base.rb:873:in `loop'
# ./script/import_scripts/base.rb:873:in `batches'
# ./script/import_scripts/flarum_import.rb:101:in `import_posts'
# ./script/import_scripts/flarum_import.rb:32:in `execute'
# ./script/import_scripts/base.rb:47:in `perform'
# ./script/import_scripts/flarum_import.rb:162:in `<top (required)>'
# ------------------
# --- Caused by: ---
# PG::UniqueViolation:
#   ERROR:  duplicate key value violates unique constraint "import_ids_pkey"
#   DETAIL:  Key (val)=(3) already exists.
#   ./script/import_scripts/base.rb:231:in `block in all_records_exist?'
No examples found.


Finished in 0.00004 seconds (files took 5.56 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

インデックスが破損しているようです。これは意外ですね。Postgres のバージョンは何ですか?データベースを消去して再度試すのが良いでしょう。他のトピックに関する問題をデバッグする際、何度も繰り返す必要が出てくる可能性が高いです。

もう一つの選択肢として、そのインデックスを再構築し、重複レコードを削除して動作するまで試行する方法があります。

「いいね!」 3

ジェイ、ありがとう!残念ながら、私の不注意(仮想マシンの取り扱いミス)により、この Discourse インストール環境を失ってしまいました。そのため、元に戻って確認することも、あなたが推奨するトラブルシューティングを行うこともできず、とても恥ずかしく感じています。しかし、これが現状です。

お伝えできることは、Discourse の Ubuntu 設定手順に従ったということです:

したがって、インストールされた Postgres のバージョンは、その方法で設定されたものになります。また、その時点で DB をクリアせずに数回インポートを試みていたため、それが関係しているかもしれません。

Docker アプローチではなく Ubuntu の開発環境方法を採用したのは、以前(Digital Ocean で)試した際、Docker/コンテナ内部にあるため別のアプローチが必要だと思われるなど、何らかの作業を行うための手順が見つからず、どれも機能しなかったからです。

残念ながら、私は自分の理解の限界で動いている状況ですが、少なくとも自分で試してみようと思ったことは価値があったと感じています。この大きな setback と、今後さらに多くのトラブルシューティングが必要になる可能性があるという認識から、専門家の手を借りる時期が来たと考えられます。そのため、そのための予算確保を試みることにします。:grinning_face_with_smiling_eyes:

引き続きご協力いただき、ありがとうございます!

完璧です!再び発生しない限り、何が起きたか特定する必要はありません。

「いいね!」 2