恢复PostGIS数据库时出错:“类型几何不存在”

时间:2018-12-20 14:50:06

标签: postgresql postgis pg-restore

因此,我的一位同事即将离开我们公司,他使用pg_dump(间接地通过pgAdmin III)来转储其本地数据库。他将.backup文件放在公司服务器上,现在我正在使用pg_restor(通过pgAdmin III间接地)将他的表恢复到公司数据库中。

但是我注意到只有没有几何的表被还原了。

仔细查看日志时,我发现错误是以下(对法语区域设置感到抱歉)

pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  le type « geometry » n'existe pas
LIGNE 3 :     geom geometry(Point,5699),
                   ^
    La commande était : CREATE TABLE cbt_poste (
    id integer NOT NULL,
    geom geometry(Point,5699),
    nom_du_pos character varying(32),
    d...

基本上,它指出类型Geometry不存在。但是,当我在数据库的任何架构中创建带有“几何”列的表时,它都可以成功运行。

所以我的问题本质上是:

当我创建带有“几何”列的表格时,一切正常。 但是,当pg_restore创建一个带有“几何”列的表时,一切都会发生,好像从未存在过PostGIS扩展一样。

对这种问题有经验吗?

2 个答案:

答案 0 :(得分:0)

我可能认为,您要还原转储的数据库上没有安装PostGIS扩展。这就是为什么无法识别空间数据类型(尤其是几何形状)的原因。您可以尝试安装PostGIS并重试pg_restore。

答案 1 :(得分:0)

查看是否已安装postgis,并在psql中编写此代码:

SELECT PostGIS_full_version();

如果未安装,则可以按照postgis install instructions

中的说明进行安装

如果安装了postgis,则需要确保扩展名在数据库中可用,如果没有,则可以使用以下方式创建它:

CREATE EXTENSION postgis;