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之后,我可以得到该geometry
types。 这就是为什么我在这里有点无知,因为一切都很好。
任何人有任何想法,我怎么能解决这个问题,或者我能找什么?
使用的版本:
- 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.sql
和create-database.sql
文件,并使用在第一个sql文件中创build的新用户运行其余部分。 之后问题就消失了。 顺便说一下,两个用户的search_path都是一样的, PostGIS_full_version()
结果也是一样的。
所以,以供将来参考; 如果为数据库创build另一个用户,则在创build数据库之后切换到该用户,否则PostGIS可能会有关于其数据types的问题。
谢谢大家的回应。