フォロー

クラゲ丼 Ubuntu 20.04 に上げたら SubwayTooter でエラーが出ています
method=GET path=/api/v1/instance format=html controller=Api::V1::InstancesController action=show status=500 error='ActiveRecord::StatementInvalid: PG::ObjectNotInPrerequisiteState: ERROR: materialized view "instances" has not been populated
HINT: Use the REFRESH MATERIALIZED VIEW command.

MATERIALIZED VIEWとは🤔

· · Web · 1 · 0 · 2

ググったらこんな説明がありますね。エラーの文言でググったらもう少し詳細がわかるかも(マテリアライズド ビューの「instances」がうんちゃら)

qiita.com/jiyu58546526/items/8

@popn_ja ありがとうございます。とりあえずpsqlから「refresh materialized view instances;」って入れてみたら「ERROR: relation "instances" does not exist」と怒られたのでnameは何を入れたらいいのかな、mastodonかなあ

DBはmastodonで使っているのを選択した上で?

@popn_ja @yi0713 これは、Sidekiqの管理画面開いて、上の定期実行というところからinstance_refresh_schedulerを『すぐにエンキュー』することで実行できるハズです。ちょっと時間かかります。

けさ弊鯖もちょうど同じ問題に気づいて、リンク先の“Maybe”以降の手順で解決しました。

discourse.joinmastodon.org/t/a

ぽぷんじゃさんの言う通り、psqlコマンドを打つ時にログインするデータベースを指定すればいいかと。

@hanage999 @popn_ja @yi0713 Rails Consoleから実行するやり方として、

bin/rails c

Instance.refresh

という手もあります。

@hanage999 @popn_ja @yi0713 クッソ時間かかるクエリーを解決するために、実行結果をマテリアライズ(実体化)させて持っておくことができるビューで、一時テーブルの豪華なやつです。

リフレッシュして生成しておかないと、データが参照できません。

通常は、SidekiqのScheduleで定期実行しています。

データベースのアップグレードなどを行うとマテリアライズした実体がなくなってしまうので、再生成されるまで動かなくなってしまいます。

とすると、1時間に1度定期実行するのを待てば自然解決したはずですが、うちの場合は多分1時間以上問題が続いてたので、ちょっと疑問が。ちなみに問題は、pinafore.socialで弊鯖を登録しようとして500を返されたというものです。

@hanage999 @popn_ja @yi0713 うん、なんかたぶん異常ですね。いまちょっと時間ないので、あとで検証してみます。条件が揃うと、非常によく起きる問題だと思います。

そういえば、うちも最近postgresqlのバージョンを13から14にアップグレードしたんでした。やはり……

@hanage999 @popn_ja @yi0713 pg_dumpからのpsql流し込みサーバは、特になにも対処せずにアップグレードできてるので、pg_upgradeの時に起きるかも

うちはpg_upgradeclusterを使いました。裏ではpg_dumpが動いてました

@noellabo @hanage999 @popn_ja ちょっと外出してまして対応が遅れましたが、普通にpsqlから直せたと思います。いろいろお手数おかけしました

@hanage999 @popn_ja この方法でokでした。ありがとうございます

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。