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 --> 错误:运算符不存在:双精度 [] = 数字 []的主要内容,如果未能解决你的问题,请参考以下文章

声纳运行器授权错误

Flutter:构建运行器引发预编译错误

高级运维:Nginx常见问题处理安装部署Tomcat服务器使用Tomcat部署虚拟主机

当 UDF 使用一些外部资源文件但在本机运行时,为啥 Hive 错误 FileNotFoundException?

颤振自动路由构建运行器错误路由必须具有页面或重定向目标

将 iOS UIAutomation 作为操作后构建脚本运行会作为 posix spawn 错误返回