错误:索引表达式中的函数必须在 Postgres 15 中标记为 IMMUTABLE

问题描述 投票:0回答:1

On

pg_restore
Postgresql 在创建索引时抛出错误:

pg_restore: error: could not execute query: ERROR:  functions in index expression must be marked IMMUTABLE
Command was: CREATE INDEX inventory_package__name_index ON public.inventory_package USING gin (public.unaccent((name)::text) public.gin_trgm_ops);

使用 Postgresql 15

postgresql restore pg-restore postgresql-15
1个回答
0
投票

大概有人更改了该函数以将其标记为不可变:

alter function unaccent(text) immutable;

但是由于 unaccent 函数是扩展的一部分(也称为“unaccent”),因此该标记在转储和恢复期间会丢失。您需要重复修改,当然前提是您认为这是正确的做法。最好围绕扩展的非重音函数创建一个包装器,并声明该包装器不可变,然后使用它。这样以后升级就不会出现同样的问题了。

© www.soinside.com 2019 - 2024. All rights reserved.