我使用的Postgres的Django項目,我目前正在執行一個數據庫備份的PostgreSQL 9.1 pg_restore的錯誤/恢復系統,當用戶單擊備份,然後pg_restore的,當他們鍵還原備份儘可能簡單執行pg_dump的。關於PLPGSQL
一切似乎很好,很正常,直到它實際上是嘗試執行此時它給這個錯誤的pg_restore的:
pg_restore: [archiver (db)] Error from TOC entry 3206; 0 0 COMMENT EXTENSION plpgsql pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
我看着就是PLPGSQL等我明白了,對於錯誤我嘗試手動設置「擴展的所有者」給執行腳本的用戶,並擁有數據庫本身,但沒有任何改變,它真的很煩人,因爲它試圖設置所有東西的評論錯誤
這是所有這些都是由pg_dump自動創建的,所以註釋行不能被刪除,並且沒有標誌來禁用註釋(我知道),所以我真的堅持如何解決這個問題。
如果您連接使用PSQL和類型'\ l',你怎麼看在該數據庫中的「所有者」列?由於plpgsql是不可信的語言,它只能被數據庫所有者或數據庫超級用戶修改(並且我猜這甚至適用於它的評論)。 – kgrittn 2012-04-16 09:22:16
我可以證實,所有者是數據庫的是正確的,由pg_restor命令的-U選項(和pg_dump的太)指定的用戶 – 2012-04-16 23:28:55
這不是那麼簡單,很遺憾匹配。我有pg_dump輸出,希望能夠使用這些語言創建語言和函數。如果我手動創建語言作爲數據庫超級用戶,則由於權限錯誤而導致功能創建失敗。如果我不這樣做,程序語言安裝由於許可錯誤而失敗。在任何一種情況下,都會觸發更多的依賴於現有功能的功能,因爲這些功能不存在也無法創建。 – Quixadhal 2012-12-03 14:31:45