的PostgreSQL数据库

问题描述:

在备份数据库上传的上传备份我运行命令:的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

不知道除了“替换可执行文件”之外,还需要其他什么。使用您在操作系统中使用的任何安装程序/软件包管理器来安装新的二进制文件。这没有什么魔力。 –

你可以定义查询它,例如:

创建视图:

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

啊 - 对不起。用“任何解决方案”错误地“解决问题” –