【问题标题】:Correctly create a multipolygon column with postgis使用 postgis 正确创建多面列
【发布时间】:2014-05-13 07:26:35
【问题描述】:

我是使用 postgres 和 postgis 的新手,我正在使用 postgis v2.0。 我有一个已经在使用 postgis 的数据库,并希望使用下一行从备份中恢复数据:

pg_restore -U db_user -d db_name -C backupfile.backup

我得到下一个错误:

sql:import.sql:53: ERROR:  type "geometry" does not exist
LINE 19:     geom public.geometry(MultiPolygon,4326)

我能够得到 sql 代码,如果我执行它,我当然会得到同样的错误 :), sql代码是:

CREATE SCHEMA ch01;


ALTER SCHEMA ch01 OWNER TO db_user;

SET search_path = ch01, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

CREATE TABLE geotable (
    ...
    geom public.geometry(MultiPolygon,4326)
);  

...

你能帮帮我吗?使用此必填列创建此表的正确方法是什么?请注意,此表不是在几何类型所在的公共架构中创建的,而是要求在 ch01 架构中创建,我认为这可能是问题,但我真的不知道。

提前致谢

【问题讨论】:

  • 您是从不同版本的 PostGIS 恢复吗?如果它安装在public 中,最好将其保留在搜索路径中,因此SET search_path = ch01, public, pg_catalog;
  • 没错,正确设置 search_path 总是一个好主意,但是,这不是这里的主要问题。

标签: sql postgresql postgis


【解决方案1】:

试试:

create table ch01.geotable(
  geom geometry(MultiPolygon, 4326)
);

属于模式 ch01 的是表,而不是列。当然,您可以在创建表后向特定用户授予访问权限。几何函数默认安装在公共架构中,因此任何有权访问该数据库的人通常都可以使用它们——您的错误来自于将 schema.datatype 放在 create table 语句中。

有关架构、用户等的更多信息,请参阅官方文档http://www.postgresql.org/docs/9.1/static/ddl-schemas.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多