Postgres_erro --> 错误:运算符不存在:双精度 [] = 数字 []
Posted
技术标签:
【中文标题】Postgres_erro --> 错误:运算符不存在:双精度 [] = 数字 []【英文标题】:Postgres_erro --> ERROR: operator does not exist: double precision[] = numeric[] 【发布时间】:2020-03-05 15:14:21 【问题描述】:我正在尝试在 postgres 中创建一个表来存储栅格数据。 我有 2 个不同的环境:dev 和 prod。
如果我在 dev 中执行 DDL 语句,那么它会毫无问题地创建表。
但在 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】:必须是第三个约束。与之相比:
'32767.0000000000'::double precision[]
【讨论】:
yah..我改变了,它正在工作。但奇怪的是 postgres 版本 9.3.25 它正在使用 numeric[] 但在 9.3.24 它必须是双精度 [] 我一秒钟都不相信。 我也认为不应该仅仅因为子版本更改而发生,所以我会进一步检查此事。 现在正在创建表,但在加载数据时我遇到了这个未知问题。以上是关于Postgres_erro --> 错误:运算符不存在:双精度 [] = 数字 []的主要内容,如果未能解决你的问题,请参考以下文章
高级运维:Nginx常见问题处理安装部署Tomcat服务器使用Tomcat部署虚拟主机