【发布时间】: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