2013-12-08 47 views
3

我有一個外鍵type的表,其鏈接到表wp_types。無論何時我嘗試向該表中插入一行,我都會收到以下錯誤:Postgres:使用外鍵將行插入到表中

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執行。 另外我不明白這個查詢試圖做什麼,它顯然與檢查外鍵約束相關,但我不明白如何。

+0

哪些是你的查詢中使用'ONLY'的原因是什麼? –

回答

2

和PostgreSQL文檔:正如你提到的錯誤

If ONLY is specified, only that table is scanned. If ONLY is not specified, the table and all its descendant tables (if any) are scanned.

與檢查外鍵連接。當指定ONLY時,postgres無法檢查它們,並可能導致錯誤。

+0

我明白了。我不明白的是權限問題或者如何解決什麼是錯誤的。這兩個表由試圖執行插入操作的用戶所擁有,並且該用戶對模式中的所有表和序列都具有ALL。 –

0

兩點:

  1. 難道你從Postgres的用戶放棄了超級用戶的權限?

  2. 基本模式的權限是什麼?

現在需要考慮的一件事是您不確定查詢在做什麼。一個簡單的EXPLAIN可以告訴你它在做什麼,但是錯誤表明問題出在模式權限上,而不是查詢所做的事情。

嘗試:

GRANT USAGE ON SCHEMA base TO postgres;