Sql Postgres:使用外键将行插入表中

Sql Postgres:使用外键将行插入表中,sql,postgresql,Sql,Postgresql,我有一个带有外键type的表,它链接到表wp\u types。每当我尝试在该表中插入一行时,都会出现以下错误: ERROR: permission denied for schema base LINE 1: SELECT 1 FROM ONLY "base"."wp_types" x WHERE "id" OPERATOR(p... ^ QUERY: SELECT 1 FROM ONLY "base"."wp_types" x WHERE "i

我有一个带有外键
type
的表,它链接到表
wp\u types
。每当我尝试在该表中插入一行时,都会出现以下错误:

ERROR:  permission denied for schema base
LINE 1: SELECT 1 FROM ONLY "base"."wp_types" x WHERE "id" OPERATOR(p...
                       ^
QUERY:  SELECT 1 FROM ONLY "base"."wp_types" x WHERE "id" OPERATOR(pg_catalog.=) $1 FOR SHARE OF x
查询正在作为postgres执行。 此外,我不明白此查询试图做什么,它显然与检查外键约束有关,但我不明白如何进行。

来自postgresql文档:

如果指定了ONLY,则只扫描该表。如果未指定ONLY,则扫描该表及其所有子表(如果有)

正如您所提到的,错误与检查外键有关。当仅指定时,postgres无法检查它们,这可能会导致错误。

两点:

  • 您是否可能从postgres用户中删除了超级用户权限

  • 基本架构的权限是什么

  • 现在有一件事要考虑的是,你不确定查询在做什么。一个简单的
    EXPLAIN
    可以告诉您它在做什么,但是错误表明问题出在架构权限上,而不是查询在做什么

    尝试:


    在查询中只使用
    的原因是什么?我明白了。我不明白的是权限问题或如何找出问题所在。这两个表都由尝试执行插入的用户拥有,并且该用户拥有架构中所有表和序列的全部信息。
    
     GRANT USAGE ON SCHEMA base TO postgres;