美好的一天同事。
我有一个非常奇怪的问题。我使用docker-compose,我的文件的一部分看起来像:
version: "2.1"
services:
db:
image: dr.mediascope.net/mediascope/wf/db:latest
container_name: workflow_db_test
ports:
- "15432:5432"
environment:
- POSTGRES_USER=dev
- POSTGRES_PASSWORD=dev
- POSTGRES_DB=wf-db
networks:
wf_newfusion:
aliases:
- wf-db
volumes:
- /root/opt/databus_newfusion/workflow_newfusion/create-schema-docker.sql:/docker-entrypoint-initdb.d/4-schema.sql
启动码头工具后,我抓住下一个错误:
ERROR: type "json_param" does not exist at character 252
我的SQL的一部分,它可以在Idea中正常工作:
-- separated schema which is dedicated for API
DROP SCHEMA IF EXISTS api CASCADE;
CREATE SCHEMA api;
ALTER SCHEMA api
OWNER TO wfweb_docker;
DROP TYPE IF EXISTS json_param;
CREATE TYPE json_param AS (id TEXT, label TEXT);
ALTER TYPE json_param
OWNER TO wfweb_docker;
.......
SET search_path = core, pg_catalog;
CREATE OR REPLACE VIEW api.v_scheme_param_set AS
WITH cte AS (
SELECT
param_set_detail.param_set_id,
json_agg(row_to_json(
ROW (param_set_detail.param_name :: TEXT, param_set_detail.param_val :: TEXT) :: json_param)) AS set_values
FROM core.param_set_detail
GROUP BY param_set_detail.param_set_id
)
SELECT
s.scheme_id,
cte.param_set_id,
cte.set_values
FROM core.param_set s
JOIN cte ON s.param_set_id = cte.param_set_id
ORDER BY cte.param_set_id DESC;
如果我使用Idea Ultimate并执行它,一切正常!没有错误的消息和其他!如果我在“psql”中使用它或者当docker启动它时会出现错误。在此脚本之前运行了另外三个,但一切正常。
答案 0 :(得分:1)
据推测,您在json_param
架构中创建了api
类型。在这种情况下,您需要在使用该类型时在查询中指定架构名称,因为您明确地在搜索路径中 not 包含该架构。
此外,您无需在搜索路径中加入pg_catalog
,因为它是always searched。