Postgres_erro -> ERROR: оператор не существует: двойная точность [] = числовой [] - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь создать таблицу в postgres для хранения растровых данных. У меня есть 2 разные среды: dev и prod.

, если я выполняю инструкцию DDL в dev, то без проблем создается таблица.

Но в prod я получаю странную ошибку , Как решить эту проблему? Я не являюсь администратором и в настоящее время сталкиваюсь с трудностями с этим.

DDL для таблицы

CREATE TABLE test_shema.test_table (
    rid int4 NOT NULL,
    rast raster NULL,
    CONSTRAINT elevation_hi_pkey_test PRIMARY KEY (rid),
    CONSTRAINT enforce_height_rast_test CHECK ((st_height(rast) = ANY (ARRAY[100, 92]))),
    CONSTRAINT enforce_max_extent_rast_test CHECK ((st_envelope(rast) @ '0103000020E61000000100000005000000A2221ECF131C64C07F55AF453F8C3240A2221ECF131C64C0FEE6DF13C4963640444672D5B14263C0FEE6DF13C4963640444672D5B14263C07F55AF453F8C3240A2221ECF131C64C07F55AF453F8C3240'::geometry)) NOT VALID,
    CONSTRAINT enforce_nodata_values_rast_test CHECK ((_raster_constraint_nodata_values(rast) = '{32767.0000000000}'::numeric[])),
    CONSTRAINT enforce_num_bands_rast_test CHECK ((st_numbands(rast) = 1)),
    CONSTRAINT enforce_out_db_rast_test CHECK ((_raster_constraint_out_db(rast) = '{f}'::boolean[])),
    CONSTRAINT enforce_pixel_types_rast_test CHECK ((_raster_constraint_pixel_types(rast) = '{16BSI}'::text[])),
    CONSTRAINT enforce_same_alignment_rast_test CHECK (st_samealignment(rast, '01000000006A98816335DA4E3F6A98816335DA4EBFA2221ECF131C64C0FEE6DF13C496364000000000000000000000000000000000E610000001000100'::raster)),
    CONSTRAINT enforce_scalex_rast_test CHECK ((round((st_scalex(rast))::numeric, 10) = round(0.000941539829921079, 10))),
    CONSTRAINT enforce_scaley_rast_test CHECK ((round((st_scaley(rast))::numeric, 10) = round((-0.000941539829921079), 10))),
    CONSTRAINT enforce_srid_rast_test CHECK ((st_srid(rast) = 4326)),
    CONSTRAINT enforce_width_rast_test CHECK ((st_width(rast) = ANY (ARRAY[100, 15])))
);

Ошибка, которую я получаю в среде prod

ERROR:  operator does not exist: double precision[] = numeric[]
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

1 Ответ

1 голос
/ 05 марта 2020

Должно быть третье ограничение. Сравните с этим вместо этого:

'{32767.0000000000}'::double precision[]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...