こんにちは、
2017 年から運用していたフォーラムを 2.4 から 2.6 にアップグレードしました。
アップグレード中に、PostgreSQL 9.5 が PostgreSQL 12 に置き換えられていることに気づきました。
再構築操作はエラーなしで完了しましたが、ホームページでエラー 500(または「おっと」というメッセージ)が表示されます。
カテゴリページでも同様のエラーが発生しています。
管理者画面、ユーザープロフィール、ユーザー一覧、個別の投稿は正常に動作しています。
ただし、管理者画面の「トップ参照元」は動作しません。
解決策が思いつきません。
よろしくお願いいたします。
おっしゃる通りです。/logs に同じエラーが何度も記録されています。
NoMethodError (nil:NilClass に hex' メソッドが定義されていません) app/models/upload.rb:180:in base62_sha1’
app/models/upload.rb:174:in short_path' app/models/upload.rb:146:in short_path’
app/models/group.rb:767:in flair_url' (eval):5:in _fast_attributes’
lib/freedom_patches/ams_include_without_root.rb:54:in include!' lib/freedom_patches/ams_include_without_root.rb:57:in include!’
lib/freedom_patches/ams_include_without_root.rb:57:in include!' app/controllers/application_controller.rb:440:in serialize_data’
app/controllers/application_controller.rb:449:in render_serialized' lib/topic_list_responder.rb:16:in block (2 levels) in respond_with_list’
lib/topic_list_responder.rb:9:in respond_with_list' app/controllers/list_controller.rb:102:in block (2 levels) in class:ListController ’
app/controllers/list_controller.rb:107:in public_send' app/controllers/list_controller.rb:107:in block (2 levels) in class:ListController ’
app/controllers/application_controller.rb:340:in block in with_resolved_locale' app/controllers/application_controller.rb:340:in with_resolved_locale’
lib/middleware/omniauth_bypass_middleware.rb:68:in call' lib/content_security_policy/middleware.rb:12:in call’
lib/middleware/anonymous_cache.rb:336:in call' config/initializers/100-quiet_logger.rb:19:in call’
config/initializers/100-silence_logger.rb:31:in call' lib/middleware/enforce_hostname.rb:22:in call’
lib/middleware/request_tracker.rb:176:in `call’
残念ながら、セーフモードで起動してすべてを無効にしても問題は解決しません。
まだエラーが発生しています。
ログにこのエラーが何度も表示されます:
NoMethodError (nil:NilClass に対して hex メソッドが定義されていません) app/models/upload.rb:180:in base62_sha1' app/models/upload.rb:174:in short_path’ app/models/upload.rb:146:in `short_path’ app/models/group.rb:
また、管理ダッシュボードでは、一部のメトリクス(Top Referred Topics)でエラーが発生します:
「申し訳ありませんが、リクエストに時間がかかりすぎました」
michaeld
(Michael - Communiteq)
2020 年 8 月 27 日午前 10:22
8
以前、同じ問題に遭遇したことがあります。その原因は、カテゴリ画像が欠落していたことです。Discourse は画像の寸法を取得しようとして失敗します。
カテゴリ画像を削除してみてください。
復元を試みましたが、エラーが発生しました:
[2020-08-27 10:06:41] Sidekiqを一時停止中…
[2020-08-27 10:06:41] Sidekiqがジョブの実行を完了するまで最大60秒間待機中…
[2020-08-27 10:38:40] 例外:ERROR: デッドロックが検出されました
DETAIL: プロセス594は、データベース16569のリレーション1113165に対するAccessExclusiveLockを待機中ですが、プロセス1617によってブロックされています。
プロセス1617は、データベース16569のリレーション1113221に対するAccessShareLockを待機中ですが、プロセス594によってブロックされています。
HINT: クエリの詳細については、サーバーログを参照してください。
CONTEXT: SQL文 “ALTER TABLE public.categories SET SCHEMA backup;”
PL/pgSQL関数 inline_code_block 行11のEXECUTE
グループのフラグが原因かどうかを特定し、その問題を解決する方法は?
ありがとうございます。
michaeld
(Michael - Communiteq)
2020 年 8 月 27 日午後 1:33
13
グループのアバター装飾を削除するか、再アップロードして、問題が解決するか確認してください。
pfaffman
(Jay Pfaffman)
2020 年 8 月 27 日午後 3:11
14
これで解決しました、@michaeld さん!素晴らしい仕事です。@Olivier_Baillon さん、Michael さんの投稿を解決策としてマークしてください!
他にも同様の問題を抱えている方がいらっしゃる場合は、以下のような手順を実行してください。
cd /var/discourse
./launcher enter app
rails c
Group.all.pluck(:id,:flair_icon,:flair_upload_id)
# `flair_upload_id` が設定されているグループの場合、以下のようにします
g=Group.find(GROUP_ID_FROM_THE_LIST) # これは flair_upload_id ではなく id です
g.flair_upload
g.save
よりエレガントな方法もありますが、数が少ない場合はこれで始められるはずです。
ありがとうございます @michaeld さん、@pfaffman さん
私一人では絶対にそれを見つけることはできませんでした。
本当にありがとうございます