Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
上传PostgreSQL数据库的备份_Sql_Postgresql - Fatal编程技术网

上传PostgreSQL数据库的备份

上传PostgreSQL数据库的备份,sql,postgresql,Sql,Postgresql,在上载备份数据库期间,我运行以下命令: pg_restore 20150401.backup > backup.txt 这给了我以下警告: pg_restore:[archiver]警告:不知道如何设置对象的所有者 物化视图 事实上,当备份启动时,Materialized视图并不存在。 所以我需要在查询中手动运行它的创建代码。这很不方便 我正在运行PostgreSQL 9.3.3 有办法解决这个问题吗?这个问题在将来的版本中得到解决了吗?您可以查询它的定义,例如: 创建视图: t=# c

在上载备份数据库期间,我运行以下命令:

pg_restore 20150401.backup > backup.txt
这给了我以下警告:

pg_restore:[archiver]警告:不知道如何设置对象的所有者 物化视图

事实上,当备份启动时,Materialized视图并不存在。 所以我需要在查询中手动运行它的创建代码。这很不方便

我正在运行PostgreSQL 9.3.3


有办法解决这个问题吗?这个问题在将来的版本中得到解决了吗?

您可以查询它的定义,例如:

创建视图:

t=# create materialized view so55 as select * from pg_tables where tablename like 'gt%';
SELECT 0
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)
获取ddl:

t=# create materialized view so55 as select * from pg_tables where tablename like 'gt%';
SELECT 0
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)

9.3.5中有一个关于pg_转储和物化视图的错误修复。目前的9.3。补丁版本是9.3.16-你真的应该升级。也许这个问题会消失。@a_horse_,没有名字,看,我正在试图找到如何执行更新,但没有关于如何执行更新的指南。不确定除了“替换可执行文件”之外,您还需要什么。使用您在操作系统中使用的任何安装程序/包管理器来安装新的二进制文件。这并没有什么神奇之处。@horse\u有一个\u no\u的名字,可以“在一边”创建它们,然后简单地替换文件夹吗?这样,如果出现问题,我可以返回旧文件。同样,这取决于您的操作系统和当前版本的安装方式。你可以在升级之前备份这些文件夹(但无论如何你都应该定期备份你的服务器,所以请相信这一点)我保存了定义我可以手动运行它,我只是问是否有一个解决方案,它不会自动发生。我正试图避免手动查询-抱歉。将“解决问题”误认为“任何解决方案”