因此,我的一位同事即将离开我们公司,他使用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扩展一样。
对这种问题有经验吗?
答案 0 :(得分:0)
我可能认为,您要还原转储的数据库上没有安装PostGIS扩展。这就是为什么无法识别空间数据类型(尤其是几何形状)的原因。您可以尝试安装PostGIS并重试pg_restore。
答案 1 :(得分:0)
查看是否已安装postgis,并在psql中编写此代码:
SELECT PostGIS_full_version();
如果未安装,则可以按照postgis install instructions
中的说明进行安装如果安装了postgis,则需要确保扩展名在数据库中可用,如果没有,则可以使用以下方式创建它:
CREATE EXTENSION postgis;