我的database.yml开发部分如下所示:
发展:
adapter: postgis
encoding: unicode
database: openData_development
pool: 5
username: postgres
password: test1234
schema_search_path: "public,postgis"
script_dir: C:\Program Files (x86)\PostgreSQL\9.2\share\contrib\postgis-2.0
rake db:create working,创建了openData_development架构。 但我不能使用postgis ......
如果我想创建一个像:
这样的表CREATE TABLE bezirks (
id integer NOT NULL,
name character varying(255),
beznr integer,
district_code integer,
main_id integer NOT NULL,
latlon geometry,
CONSTRAINT enforce_dims_latlon CHECK ((st_ndims(latlon) = 2)),
CONSTRAINT enforce_geotype_latlon CHECK (((geometrytype(latlon) = 'MULTIPOLYGON'::text) OR (latlon IS NULL))),
CONSTRAINT enforce_srid_latlon CHECK ((st_srid(latlon) = 4326))
);
我收到错误:
ERROR: Type »geometry« doesnt exist
LINE 27: latlon geometry,
答案 0 :(得分:1)
使用postgis适配器不会在db上自动安装postgis扩展。
你必须自己做;一个帮助实现自动化的解决方案是在您的服务器上创建名为“template_postgis”的“裸”数据库,像往常一样在其上安装postgis扩展(按照postgis网站上的安装指南),然后将其添加到您的database.yml的:
development:
template: template_postgis
在每个dbs上执行此操作,因此rails会将它们创建为此模板的副本。