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