クラゲ丼 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とは🤔
@yi0713 ググったらこんな説明がありますね。エラーの文言でググったらもう少し詳細がわかるかも(マテリアライズド ビューの「instances」がうんちゃら)
@popn_ja ありがとうございます。とりあえずpsqlから「refresh materialized view instances;」って入れてみたら「ERROR: relation "instances" does not exist」と怒られたのでnameは何を入れたらいいのかな、mastodonかなあ
@yi0713 DBはmastodonで使っているのを選択した上で?
@hanage999 @popn_ja @yi0713 うん、なんかたぶん異常ですね。いまちょっと時間ないので、あとで検証してみます。条件が揃うと、非常によく起きる問題だと思います。
@hanage999 @popn_ja @yi0713 pg_dumpからのpsql流し込みサーバは、特になにも対処せずにアップグレードできてるので、pg_upgradeの時に起きるかも
@noellabo @hanage999 @popn_ja ちょっと外出してまして対応が遅れましたが、普通にpsqlから直せたと思います。いろいろお手数おかけしました
@hanage999 @popn_ja @yi0713 クッソ時間かかるクエリーを解決するために、実行結果をマテリアライズ(実体化)させて持っておくことができるビューで、一時テーブルの豪華なやつです。
リフレッシュして生成しておかないと、データが参照できません。
通常は、SidekiqのScheduleで定期実行しています。
データベースのアップグレードなどを行うとマテリアライズした実体がなくなってしまうので、再生成されるまで動かなくなってしまいます。