为什么PostGIS安装未创建template_postgis?


36

我按照以下路线安装了PostgreSQL和PostGIS:

现在,当我启动pgAdmin并尝试创建一个新的PostGIS数据库时,在Template中没有可以使用的template_postgis。


我尝试了另一种方法,即直接从PostgreSQL下载PostgreSQL软件包。这将安装服务器,并允许您使用StackBuilder下载和安装PostGIS。这不能解决我的问题。

Answers:


32

如果模板不是自动存在的,则可以很容易地创建它。这是对ubuntu的描述:http : //obsessivecoder.com/2010/02/01/installing-postgresql-8-4-postgis-1-4-1-and-pgrouting-1-0-3-on-ubuntu -9-10-karmic-koala /

这是必不可少的部分:

sudo su postgres
createdb template_postgis
createlang plpgsql template_postgis
psql -d template_postgis -f /usr/share/postgresql/8.4/contrib/postgis.sql
psql -d template_postgis -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql

在精确的穿山甲中:

sudo su postgres
createdb template_postgis
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql

奇怪..在步骤'createlang plpgsql postgistemplate'中,我得到了一个$“ plpgsql”已经安装在数据库“ postgistemplate”中...然后在下一步中,找不到psql:命令
Michael Markieta 2012年

更新-/ usr / share /路径中没有postgis目录
Michael Markieta 2012年

然后我猜它隐藏在OSX上的其他地方。您是否尝试过搜索文件?
Underdark

找到文件后,所有代码行均无错误运行。但是pgAdmin3仍然没有显示模板...嗯..重新启动我的Mac,看看是否会改变任何东西,但仍然是nada。(很奇怪。。。在改用Lion之前,我已经在Mac上使用了它)
Michael Markieta 2012年

您使用哪个用户创建模板,以及在pgAdmin中使用哪个用户?
Underdark

29

从版本2开始,Postgis通过使用扩展系统启用。要在空间上启用数据库,请登录到数据库,然后:

 CREATE EXTENSION postgis;
 CREATE EXTENSION postgis_topology;

来源:http : //postgis.net/docs/postgis_installation.html

注意:只有SUPERUSERS角色才能创建EXTENSIONS


从pgAdmin4:数据库>> {选择数据库} >>扩展>> -r单击>>创建>>从列表中选择
matt wilkie 18-4-25

6

我遇到了类似的问题,最终安装了位于以下位置的软件包:

entreprisedb.com

您可以在安装阶段选择安装postgis,也可以稍后再调用“ Application Stack Builder”。如果安装不起作用,请选择另一个文件夹来下载postgis安装程序(将被称为edb_postgis_1_5_pg91.app.zip之类)。解压缩并安装。如果它不起作用,则可能需要重新启动并重试。在pgAdmin III中应该显示template_postgis。


3

这个问题可能已经过时了,但是我在OS X Lion上遇到了同样的错误。也许我的回答可以帮助其他用户。

使用“堆栈生成器”的PostGIS默认安装将失败。但是,在第一步安装之后,您可以选择PostGIS的下载文件夹。只需将其下载到您的桌面并手动解压缩即可。通过双击该文件,它将正确安装。现在,在pgAdmin中可以使用postgis_template。


1

根据PostGIS文档,仅

PostGIS的某些打包发行版 ...将PostGIS函数加载到名为template_postgis的模板数据库中。

因此,并非每个发行版都随附template_postgis

如现有答案中所述,在PostGIS 2.x中,可以轻松地自己创建或自定义模板,方法是创建一个名为template_postgis 超级用户的常规数据库,然后创建所需的和可选的扩展名(例如pgRouting)。根据PostGIS文档:

sudo su postgres
createdb template_postgis

psql -d template_postgis -c "CREATE EXTENSION postgis;"
psql -d template_postgis -c "CREATE EXTENSION postgis_topology;"

-- if you built with sfcgal support --
psql -d template_postgis -c "CREATE EXTENSION postgis_sfcgal;"

此外,还可以通过设置标志这个新创建的数据库作为模板数据库datistemplate系统表的标志pg_databaseture

psql -d template_postgis -c "UPDATE pg_database SET datistemplate = 'true' WHERE datname = 'template_postgis';"

例如,这将防止模板数据库被其他用户或您自己意外删除或更改。(如果要更改模板,则需要将标志设置为false。)

然后,您可以根据在模板中输入的内容创建空间数据库:

createdb -T template_postgis my_spatial_db
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.