我正在尝试将Docker构建中使用PostGIS几何列。 当docker启动容器时,我得到以下日志(为简明起见缩写):
Loading PostGIS extensions into template_postgis
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
Loading PostGIS extensions into postgres
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/script.sql
其中script.sql包含以下内容:
CREATE TABLE public.spatial_data_wfs (
id int4 NOT NULL,
name varchar(255) NOT NULL,
featureid varchar(255) NOT NULL,
geofeature jsonb NOT NULL,
coordinates geometry NOT NULL
);
尽管在脚本之前加载了PostGIS扩展,但会出现以下错误:
psql:/docker-entrypoint-initdb.d/script.sql:238: ERROR: type "geometry" does not exist
LINE 6: coordinates geometry NOT NULL,
如果我删除几何列并等待容器启动,则可以使用alter table语句添加几何列,它会正常工作。
该脚本还定义了一个生成多边形的函数,这不会造成任何问题。我已经根据其他SO问题尝试了以下方法:
我只能从日志中假设以下内容:
还有其他人看到吗?我们希望所有东西都可以使用Docker和Jenkins构建。
答案 0 :(得分:0)
我发现了问题所在。数据库脚本最初是由某些工具(我认为可能是pgdump)创建的,然后添加了手动更改。该工具在脚本的开头添加了很多不必要的语句。这些语句之一如下:
runtime
我猜想此设置将覆盖“将ALTER DATABASE设置为SET search_path”。删除该语句后,脚本可以正常工作,并创建了表。