【问题标题】:"PostGIS Error: type “geography” does not exist" when using psql使用 psql 时出现“PostGIS 错误:类型“地理”不存在”
【发布时间】:2019-11-02 06:06:43
【问题描述】:

我正在创建一个 .sql 文件来创建一个新数据库。我的几个表正在使用 Postgis 扩展。当我尝试从命令行创建数据库时:

psql location < location.sql

在包含地理数据类型列的表上失败。当我 psql 进入数据库时​​:

psql location

并从我的 .sql 文件中复制粘贴创建表代码,它可以很好地创建表。我觉得我在这里错过了一个小而重要的步骤

我一直在玩弄我的 .sql 文件,但没有解决这个错误

这是我用来创建数据库的脚本:

dropdb location
createdb location
psql -d location -c "CREATE EXTENSION postgis;"
psql -d location -c "CREATE EXTENSION postgis_topology;"
psql location < location.sql

这里是 location.sql 文件中失败的表的 sn-p:

create table public.fips (
    fips_id bigserial,
    state_code char(2),
    county_code char(3),
    county_subdivision_code char(5),
    place_code char(5),
    consolidated_city_code char(5),
    longitude double precision,
    latitude double precision,
    geo_point geography,
    area_name text,
    PRIMARY KEY (fips_id)
);

geo_point 是它所抱怨的那个。

【问题讨论】:

  • 脚本中此时的search_path是否包含public?您可以尝试将数据类型更改为 public.geography 或更新 search_path。
  • hmmmm 让我尝试添加公众。地理前缀。从数据库中,看起来 search_path 包括 public
  • location=# 显示搜索路径; search_path --------------- "$user",公共,拓扑(1 行)
  • ahhhh 做到了!我在地理前面加上了public。它工作得很好。谢谢!
  • 您的脚本可能会更改会话的 search_path,因此从不同的会话中查看它不会有帮助。

标签: postgresql postgis psql


【解决方案1】:

原来我需要在 geography 数据类型前面加上 public。

【讨论】:

  • 也许可以接受您自己的答案,以便清楚地解决这个问题。
  • 经过一个小时的调试,这对我有帮助。由于某种原因,其他版本的 postgres/postgis 没有必要。
猜你喜欢
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2020-04-07
  • 1970-01-01
相关资源
最近更新 更多