Postgresql 从Postgres 7.4升级到9.4.1
我正在将博士后从古代的7.4升级到9.4.1,发现了一些错误 在旧机器上,我做到了:Postgresql 从Postgres 7.4升级到9.4.1,postgresql,psql,pg-dump,Postgresql,Psql,Pg Dump,我正在将博士后从古代的7.4升级到9.4.1,发现了一些错误 在旧机器上,我做到了: pg_dumpall | gzip > db_pg_bu.gz gunzip -c db_pg_bu.gz | psql 在新机器上,我做到了: pg_dumpall | gzip > db_pg_bu.gz gunzip -c db_pg_bu.gz | psql 在恢复的过程中,我遇到了一些我不理解的错误,也不知道这些错误的重要性。我不是DBA,只是一个低级的开发人员,所以如果有人能
pg_dumpall | gzip > db_pg_bu.gz
gunzip -c db_pg_bu.gz | psql
在新机器上,我做到了:
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
虽然这看起来无害,因为我看到plpgsql默认安装在9.2版中:
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
一个大问题是,当它恢复数据库时,对于每个网元,我都会看到如下情况:
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_还原(或者只执行
,如问题中所述)。第一跳可能的路径为7.4->8.3,但可能需要额外的一跳psql
- 编辑(未压缩)转储文件:删除(或注释掉)新版本不喜欢的任何内容。这将是一个迭代过程,它假设您的转储适合您的编辑器。(而且你知道你在做什么)。您可能需要重复,分离模式和数据(选项--schema only和--data only,我甚至不知道这些在PG-7.4中是否可用)
- 如果您失败的转换结果足够完整,并且您只对基本数据感兴趣,那么您可以到此为止,或许可以稍作润色
我不知道这是什么。可能是向核心dbms添加其他语言(如plpgsql)的方式注意:使用pg_pltemplate信息而不是创建语言参数
:您可能可以忽略此错误。-->>把冒犯的台词注释掉错误:语言“plpgsql”已存在
这意味着在旧数据库中使用postgres规则重写系统。它需要认真的工作才能重新工作详细信息:不从单个表或视图中选择的视图不可自动更新。