查询简单选择时,模式pg_catalog的权限被拒绝

时间:2019-03-05 10:02:44

标签: postgresql jdbc

我的机器上本地运行了一个postgresql 10数据库,这是从运行postgres 9的postgresql服务器导入的转储。 我还在我的机器上运行了一个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)

我是否必须在pg_catalog上授予worker任何东西,是的话,什么?

编辑:

我现在复制了我的Java项目生成的查询,并在命令行中通过psql使用了与postges超级用户完全相同的查询,这给了我类似的错误:

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

编辑:

老实说,我不知道实际的问题是什么。我卸载了postgres 10及其附带的所有内容,然后重新安装了postgres 11。现在一切正常...
如果有人仍然对可能导致此问题的原因有任何想法,我很想知道。

0 个答案:

没有答案