types“几何”不存在

我正在尝试使用PostgreSQL和PostGIS数据库为我们的产品之一构build一个Docker镜像。 虽然构build图像(和容器)并不困难,并基于另一个PostGIS图像工作 。 但是,当添加ddl来构build数据库时,我遇到了问题。

我不断得到消息: ERROR: type "geometry" does not exist 。 正因为如此,我已经阅读和在互联网上阅读,主要的根似乎是我没有正确初始化PostGIS扩展。 所以我在模板表上做了这个,并运行SELECT postgis_full_version()返回POSTGIS="2.1.3 r12547" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.10.1, released 2013/08/26" LIBXML="2.9.1" LIBJSON="UNKNOWN" TOPOLOGY RASTER似乎没事。 但是仍然没有骰子…

同样在通过\dT检查公共模式中的可用数据types之后,我可以得到该geometrytypes。 这就是为什么我在这里有点无知,因为一切都很好。

任何人有任何想法,我怎么能解决这个问题,或者我能找什么?

使用的版本:

  • Ubuntu 14.04(可靠)
  • PostgreSQL版本:9.3
  • PostGIS版本:2.1

编辑:我再次尝试创build扩展,比停止PostgreSQL,运行ldconfig (重新加载库的),并再次启动PostgreSQL,但同样的问题仍然存在。

尝试这个:

 psql my_database -c "CREATE EXTENSION postgis;" 

您必须创build/启用postgis扩展。

经过相当一段时间的努力,我终于明白了这个问题。 似乎在模式创build之后,一个GRANT从创build的数据库到另一个用户完成。 有效地不切换到该用户是问题。

我现在所做的是运行使用默认的postgres / postgis用户提供给我的create-user.sqlcreate-database.sql文件,并使用在第一个sql文件中创build的新用户运行其余部分。 之后问题就消失了。 顺便说一下,两个用户的search_path都是一样的, PostGIS_full_version()结果也是一样的。

所以,以供将来参考; 如果为数据库创build另一个用户,则在创build数据库之后切换到该用户,否则PostGIS可能会有关于其数据types的问题。

谢谢大家的回应。

Interesting Posts