Я пытаюсь использовать столбец геометрии 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:
- Создайте расширение postgis: жалуется, что оно уже создано.
- Используйте ALTER DATABASE, чтобы установить search_path для включения postgis.Нет жалоб, та же проблема.
Я могу только предположить следующее из журналов:
- Существует некоторая проблема порядка операций, где, несмотря на тот факт, что Postgis установлен,Я все еще не могу использовать столбец геометрии, потому что что-то еще должно завершиться первым.Что бы это ни было, оно завершается к тому времени, когда postgres принимает соединения.
- Функция проверяется только на синтаксис - тот факт, что код функции ссылается на тип геометрии в теле функции, не имеет значения, пока кто-то не вызовет ее.
Кто-нибудь еще видел это?Мы ожидаем, что все наши вещи будут собираться с использованием Docker и Jenkins.