[英]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
基本上有两种方法。 两者对于没有经验的人都是困难的。 (甚至对于有经验的人)
psql < dumpfile
,就像在问题中一样)。 可能的路径第一跳可能是7.4-> 8.3,但是可能需要额外的一跳。 顺便说一句:建议使用较新版本的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.