繁体   English   中英

从Postgres 7.4升级到9.4.1

[英]Upgrading from Postgres 7.4 to 9.4.1

我正在将Postgres从古老的7.4升级到9.4.1,并看到一些错误。

在旧机器上,我做了:

pg_dumpall | gzip > db_pg_bu.gz

在新机器上,我做了:

 gunzip -c db_pg_bu.gz | psql

还原时,我遇到了许多我不理解的错误,也不知道错误的重要性。 我不是DBA,只是一个低级的开发人员,所以如果有人可以帮助我了解完成此迁移所需的工作,我将不胜感激。

错误如下:

 ERROR:  cannot delete from view "pg_shadow"
 DETAIL:  Views that do not select from a single table or view are not automatically updatable.
 HINT:  To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule.

我也得到了其中的15个:

 NOTICE:  SYSID can no longer be specified

而且,尽管这看起来无害,因为我看到默认情况下在版本9.2中安装了plpgsql:

 ERROR:  could not access file "/usr/lib/postgresql/lib/plpgsql.so": No such file or directory
 SET
 NOTICE:  using pg_pltemplate information instead of CREATE LANGUAGE parameters
 ERROR:  language "plpgsql" already exists

一个大问题是,在还原数据库时,对于每个ne我看到的都是这样:

 COMMENT
 You are now connected to database "landrush" as user "postgres".
 SET
 ERROR:  could not access file "/usr/lib/postgresql/lib/plpgsql.so": No such file or directory

基本上有两种方法。 两者对于没有经验的人都是困难的。 (甚至对于有经验的人)

  • 使用一些中间版本(可能必须从源代码编译)进行逐步迁移。 在两个版本之间,您必须执行pg_dump-> pg_restore(或者只是psql < dumpfile ,就像在问题中一样)。 可能的路径第一跳可能是7.4-> 8.3,但是可能需要额外的一跳。
  • 编辑(未压缩的)转储文件:删除(或注释掉)新版本不喜欢的所有内容。 这将是一个迭代过程,并假定您的转储适合您的编辑器。 (并且您知道自己在做什么)。 您可能需要重做,将架构和数据分开(选项--schema-only和--data-only,我什至不知道PG-7.4中是否提供这些选项)

顺便说一句:建议使用较新版本的pg_dump(将导入到的版本)。 您需要通过-h标志指定源主机。 新的(目标)版本知道新版本的需求,并会尝试进行适应(在一定程度上,您仍然需要使用多个步骤),如果它不能产生可用的转储,我也将拒绝工作。 (在这种情况下,您必须采取更小的步骤...)

额外:

  • 如果转换失败的结果足够完整,并且如果您仅对基本数据感兴趣,则可以在这里停下来,并稍作修改。
  • NOTICE: using pg_pltemplate information instead of CREATE LANGUAGE parameters我不知道这是什么。 也许是将其他语言(例如plpgsql)添加到核心dbms的方式。
  • ERROR: language "plpgsql" already exists :您可能会忽略此错误。 ->>注释掉违规行。
  • DETAIL: Views that do not select from a single table or view are not automatically updatable. 这意味着在旧数据库中使用了postgres RULE重写系统。 要使其重新工作,将需要认真的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM