в запросе отказано для схемы pg_catalog при запросе простого выбора - PullRequest
0 голосов
/ 05 марта 2019

На моей машине локально работает база данных postgresql 10, которая является импортированным дампом с сервера postgresql, на котором работает postgres 9. У меня также есть Java-проект, запущенный на моей машине, который подключен к этой базе данных через jdbc. Этот проект является инструментом для управления запасами.
Этот проект Java запускает только функции или выбирает представления с определенным пользователем в базе данных с именем worker. Я создал функции и представления с пользователем admin.
Теперь, если я хочу запустить некоторые функции, любая функция, которая просто выбирает некоторые вещи, работает плавно, и кажется, что простые функции вставки тоже работают нормально. Но некоторые функции, изменяющие базу данных, выдают мне следующую ошибку:

class org.postgresql.util.PSQLException org.postgresql.util.PSQLException: ERROR: permission denied for schema pg_catalog
Where: SQL statement "INSERT INTO "Model" ("ModelID", "Name", "TypeID", "MinQuantity") VALUES (modelID, modelName, typeID, minQuantity)"
PL/pgSQL function createmodel(text,uuid,integer,uuid[],text[]) line 17 at SQL statement
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:143)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:106)

Должен ли я что-либо предоставлять worker на pg_catalog и когда да, что?

Edit:

Теперь я скопировал запрос, сгенерированный моим Java-проектом, и использовал тот же самый запрос, что и postges superuser, через psql в командной строке, и он выдал мне похожую ошибку:

ERROR:  permission denied for schema pg_catalog
LINE 1: ...LECT 1 FROM ONLY "public"."Type" x WHERE "TypeID" OPERATOR(p...
                                                         ^
QUERY:  SELECT 1 FROM ONLY "public"."Type" x WHERE "TypeID" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x
CONTEXT:  SQL statement "INSERT INTO "Model" ("ModelID", "Name", "TypeID", "MinQuantity") VALUES (modelID, modelName, typeID, minQuantity)"
PL/pgSQL function createmodel(text,uuid,integer,uuid[],text[]) line 16 at SQL statement

Edit:

Честно говоря, я не знаю, в чем была настоящая проблема. Я удалил Postgres 10 и все, что было с ним, и переустановил Postgres 11 впоследствии. Теперь все отлично работает ...
Если у кого-то еще есть идеи о том, что могло вызвать эту проблему, я хотел бы знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...