Ale*_*gen 1 gis postgresql postgis geospatial docker
我正在尝试为我们的某个产品构建一个带有PostgreSQL和PostGIS数据库的Docker镜像.虽然构建图像(和容器)并不那么难,但基于另一个PostGIS图像.但是当添加ddl来构建数据库时,我遇到了问题.
我不断得到这样的信息:ERROR: type "geometry" does not exist.因此,我在互联网上阅读和阅读,主根似乎是我没有正确初始化PostGIS Extensions.所以我在模板表上做了那个并且运行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我可以获得该geometry类型.这就是为什么我在这里有点无能为力,因为一切似乎都很好.
任何人都有任何想法如何解决这个问题,或者我可以寻找什么?
二手版本:
编辑:我再次尝试创建扩展,而不是停止PostgreSQL,运行ldconfig(重新加载lib)并再次启动PostgreSQL,但同样的问题仍然存在.
经过相当多的日子,我终于弄清楚了这个问题.似乎在创建模式之后,GRANT从创建的数据库到另一个用户完成了a .有效地不切换到该用户是问题所在.
我现在所做的就是跑了create-user.sql,并create-database.sql分别提供给我使用默认的Postgres/PostGIS的用户跑与在第一个SQL文件创建的新用户,其余的文件.之后问题就消失了.截至两个用户的search_path相同,结果PostGIS_full_version()也完全相同.
所以,供将来参考; 如果为数据库创建另一个用户,请在创建数据库后切换到该用户,否则PostGIS可能会遇到与其数据类型有关的问题.
谢谢大家的回复.
尝试这个:
psql my_database -c "CREATE EXTENSION postgis;"
Run Code Online (Sandbox Code Playgroud)
您必须创建/启用postgis扩展名。
| 归档时间: |
|
| 查看次数: |
7533 次 |
| 最近记录: |