2017-11-16 1 views
0

Ich versuche, REFRESH MATERIALIZED VIEW CONCURRENTLY recipe_search; ausführen, aber PostgreSQL gibt mir diesen Fehler: ERROR 55000 (object_not_in_prerequisite_state): cannot refresh materialized view "public.recipe_search" concurrently.Fehler 55000 `object_not_in_prerequisite_state` beim Versuch, eine materialisierte Ansicht zu aktualisieren

Die materialisierte Ansicht in Frage sieht wie folgt in psql:

# \d recipe_search 

    Materialized view "public.recipe_search" 
    Column |   Type   | Modifiers 
----------+------------------------+----------- 
id  | integer    | 
title | character varying(255) | 
document | tsvector    | 
Indexes: 
    "recipe_search_document_index" gin (document) 
    "recipe_search_title_trgm_index" gin (title gin_trgm_ops) 

Warum kann ich diese gleichzeitig auffrischen?

+0

Jemand dies nur downvoted. Wenn Sie wütend sind, dass ich meine eigene Frage beantwortet habe, siehe https://stackoverflow.com/help/self-answer. Als ich auf dieses Problem stieß, suchte ich im Internet nach dieser Fehlermeldung und fand keine hilfreichen Informationen. Nachdem ich das Problem gelöst hatte, kam ich hierher, um es zu dokumentieren, damit es zukünftige Suchende finden. Dies passt genau zur Mission von StackOverflow. –

+0

Selbstbeantwortete Fragen sind in Ordnung, aber die Tatsache, dass Sie sie selbst beantworten, hat keinen Einfluss auf die Qualität der Frage. Ihrer Frage fehlen die Informationen, die zur Reproduktion des Problems benötigt werden. Abgesehen davon, die Suche nach der Fehlermeldung gibt mir https://stackoverflow.com/questions/41803781/refresh-materialized-views-with-concurrency, was dies ein Betrüger von aussieht, und ein Kommentar dort schlägt die Fehlermeldung sollte gefolgt von einem Hinweis, der in Ihrer Frage nicht vorhanden ist. (Nein, ich habe nicht gewählt, zumindest noch nicht. Die Idee, es hier zu veröffentlichen, ist in der Tat gut.) – hvd

+0

@hvd Ich hatte den Hinweis nicht gesehen, weil ich den 'REFRESH' über einen Trigger und eine db-Bibliothek ausgeführt habe - Wenn ich den 'REFRESH' direkt über psql versuche, sehe ich es. Ich hätte wahrscheinlich das '\ d' der Ansicht hinzufügen sollen; Ich habe die Frage entsprechend aktualisiert. Die Hauptsache, die ich erreichen wollte, bestand darin, die Suche nach dieser Fehlermeldung zu aktivieren, um die Lösung zu finden. –

Antwort

1

Die materialisierte Ansicht muss einen eindeutigen Index

Eine Ansicht nicht CONCURRENTLY aktualisiert materialisiert kann, wenn es mindestens einen eindeutigen Index hat, wie in der Dokumentation beschrieben:

CONCURRENTLY

... This option is only allowed if there is at least one UNIQUE index on the materialized view which uses only column names and includes all rows; that is, it must not index on any expressions nor include a WHERE clause.

https://www.postgresql.org/docs/9.6/static/sql-refreshmaterializedview.html

Verwandte Themen