PG12 の破損インデックスの修復方法について

同時実行中の REINDEX がテーブルに無効なデータがあるために失敗した場合、以下の手順を実行する必要があります。

  1. こちらで行われたように、無効なデータを修正します。

  2. 以下のクエリを使用して無効なインデックスをリストします。
    SELECT pg_class.relname FROM pg_class, pg_index WHERE pg_index.indisvalid = false AND pg_index.indexrelid = pg_class.oid;

  3. 上記でリストされた各無効なインデックスを DROP INDEX <indexname>; を使用して削除します。

  4. 再度 REINDEX を実行します。