恢复 postgres Dump 出现错误:类型不存在

恢复 postgres Dump 出现错误:类型不存在

我从装有 postgresql 8.4 和 postgis 1.5 的旧 Ubuntu 机器上转储了一个数据库。在新的 ubuntu 12.04 上,我安装了 Postgresql 9.1 和 postgis 1.5。(使用 postgis.sql 和 spatial_ref_sys.sql 创建了 postgis_template)。

当我在新机器上恢复转储时,数据已建立,但我收到 25 条类似这样的错误消息

...    

pg_restore: [archiver (db)] Error from TOC entry 711; 1255 18533 FUNCTION gidx_in(cstring) postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  function public.gidx_in(cstring) does not exist
    Command was: DROP FUNCTION public.gidx_in(cstring);

pg_restore: [archiver (db)] Error from TOC entry 34; 1255 17743 FUNCTION geometry_send(geometry) postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  type "geometry" does not exist
    Command was: DROP FUNCTION public.geometry_send(geometry);

pg_restore: [archiver (db)] Error from TOC entry 33; 1255 17742 FUNCTION geometry_recv(internal) postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  function public.geometry_recv(internal) does not exist
    Command was: DROP FUNCTION public.geometry_recv(internal);

pg_restore: [archiver (db)] Error from TOC entry 31; 1255 17740 FUNCTION geometry_out(geometry) postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  type "geometry" does not exist
    Command was: DROP FUNCTION public.geometry_out(geometry);

pg_restore: [archiver (db)] Error from TOC entry 30; 1255 17739 FUNCTION geometry_in(cstring) postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  function public.geometry_in(cstring) does not exist
    Command was: DROP FUNCTION public.geometry_in(cstring);

pg_restore: [archiver (db)] Error from TOC entry 709; 1255 18529 FUNCTION geography_out(geography) postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  type "geography" does not exist
    Command was: DROP FUNCTION public.geography_out(geography);

有人能解释一下发生了什么吗?我可以忽略这些错误吗?

谢谢!谨致问候,

托尼

答案1

您有多个错误。需要仔细阅读它们,然后阅读您的转储文件(找到上述错误中引用的行并确定这些错误发生的位置是否是一个严重的问题,或者是您可以忽略的问题) -我们我们不能告诉你这些,因为我们确实不知道你的环境中什么是重要的。

从我看到的错误消息来看,您的转储文件似乎DROP在实际加载数据之前尝试清理旧数据库内容(函数、类型和表),因此如果您要还原到没有现有数据的系统,则在尝试删除不存在的对象时会收到错误。
如果是这样,您可能不必担心错误(尽管您可能希望在没有“清理”命令的情况下进行转储以供将来使用,这样您就不会收到错误 - 请参阅pg_dump手册页以获取有关如何执行此操作的信息)。

现在,如果您在创建函数/过程时开始遇到错误,则这些错误很可能很严重,需要调查和纠正。

相关内容