2017-04-12 112 views
0

在備份數據庫上傳的上傳備份我運行命令:的PostgreSQL數據庫

pg_restore 20150401.backup > backup.txt 

這給了我以下warrning:

pg_restore的:[歸檔]警告:不要知道如何設置對象 所有者物化視圖

事實上,當備份了materilzed視圖不存在。 所以我需要在查詢manualy中運行它的創建代碼。這非常不方便。

我乳寧的PostgreSQL 9.3.3

有沒有辦法解決這個問題?在未來的版本中解決了這個問題嗎?

+0

有9.3.5 bug修復與pg_dump和物化視圖有關。目前9.3。補丁版本是9.3.16 - 你應該真的升級。那麼問題可能會消失。 –

+0

@a_horse_with_no_name請參閱http://stackoverflow.com/questions/43363051/how-to-upgrate-minor-release-in-postgresql?noredirect=1#comment73789137_43363051我試圖找到如何執行更新,但沒有如何做到這一點的指南.. – Tov3

+0

不知道除了「替換可執行文件」之外,還需要其他什麼。使用您在操作系統中使用的任何安裝程序/軟件包管理器來安裝新的二進制文件。這沒有什麼魔力。 –

回答

0

你可以定義查詢它,例如:

創建視圖:

t=# create materialized view so55 as select * from pg_tables where tablename like 'gt%'; 
SELECT 0 

GET DDL:

t=# \pset format unaligned 
Output format is unaligned. 
t=# select concat('create view ',schemaname,'.',matviewname,' as ',definition) from pg_matviews where matviewname = 'so55'; 
concat 
create view public.so55 as SELECT pg_tables.schemaname, 
    pg_tables.tablename, 
    pg_tables.tableowner, 
    pg_tables.tablespace, 
    pg_tables.hasindexes, 
    pg_tables.hasrules, 
    pg_tables.hastriggers 
    FROM pg_tables 
    WHERE (pg_tables.tablename ~~ 'gt%'::text); 
(1 row) 
+0

我已經保存了defintion我可以運行它manualy,我只是問是否有解決方案事實上它不會自動發生。我試圖避免手動查詢 – Tov3

+0

啊 - 對不起。用「任何解決方案」錯誤地「解決問題」 –