postgresql PostGIS在Manjaro中更新后不工作

dddzy1tm  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(2)|浏览(157)

我最近在我的Manjaro系统上运行了一个完整的更新,之后,当我试图运行一个小脚本来启动并自动保存我的Postgres-DB时,我在shell中得到了以下错误。
pg_dump:error:query failed:ERROR:could not load library“/usr/lib/postgresql/postgis-3.so“:/usr/lib/postgresql/postgis-3.so:undefined symbol:list_make1_impl
pg_dump:error:query was:

SELECT
a.attnum,
a.attname,
a.atttypmod,
a.attstattarget,
a.attstorage,
t.typstorage,
a.attnotnull,
a.atthasdef,
a.attisdropped,
a.attlen,
a.attalign,
a.attislocal,
pg_catalog.format_type(t.oid, a.atttypmod) AS atttypname,
a.attgenerated,
CASE WHEN a.atthasmissing AND NOT a.attisdropped THEN a.attmissingval ELSE null END AS attmissingval,
a.attidentity,
pg_catalog.array_to_string(ARRAY(SELECT pg_catalog.quote_ident(option_name) || ' ' || pg_catalog.quote_literal(option_value) FROM pg_catalog.pg_options_to_table(attfdwoptions) ORDER BY option_name), E',
    ') AS attfdwoptions,
CASE WHEN a.attcollation <> t.typcollation THEN a.attcollation ELSE 0 END AS attcollation,
array_to_string(a.attoptions, ', ') AS attoptions
FROM pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_type t ON a.atttypid = t.oid
WHERE a.attrelid = '18597'::pg_catalog.oid AND a.attnum > 0::pg_catalog.int2
ORDER BY a.attnum

字符串
此外,当我在pgAdmin中启动数据库时,我可以打开所有表,除了包含 geography 列的表,它需要PostGIS。它显示了以下错误:
错误:无法加载库/usr/lib/postgresql/postgis-3.so:/usr/lib/postgresql/postgis-3.so:undefined symbol:list_make1_impl SQL state:58 P01
很明显,proj-package中的某些东西被搞砸了。根据这个帖子,它可能与这个包被安装了几次有关。然而,我手动重新安装了 proj,每次都从官方Repo和AUR用不同的版本重新安装,每次都清理旧版本。错误仍然存在。
目前版本设置为:

QGIS: Version 3.16.5
Postgres: Version 12.6-1
PostGIS: Version 3.0.3-1
proj: Version 6.3.2-1
Manjaro: KDE-Plasma 5.21.3
Kernel: 4.19.183-1-Manjaro


有人对此有解决方案吗?

cgfeq70w

cgfeq70w1#

感谢本地的Linux用户组,我找到了解决问题的方法。原来,PostGIS在后台更新,新版本不再与PostgreSQL 12.6相对应。由于PostGIS已经安装,它没有向我显示这一点,而是显示了上面的错误消息。
为了检查PostGIS是否仍然与PostgreSQL兼容,我创建了一个新的数据库,然后尝试添加PostGIS扩展。我得到了以下消息,这清除了事情:

test=# CREATE EXTENSION postgis;
ERROR: could not open extension control file "/usr/share/postgresql/extensionpost.control": No such file or directory
test=# CREATE EXTENSION postgis;
ERROR: PostGIS built for PostgreSQL 13.0 cannot be loaded in PostgreSQL 12.6

字符串
所以我更新了PostgreSQL,建立了一个新的数据库集群,并在最后一个.sql上使用了pg_restore,从我的自动pg_dump重新创建了数据库。现在它又像以前一样工作了。

zf2sa74q

zf2sa74q2#

您也可以尝试将Postgis降级到以前的版本。首先,检查/var/cache/pacman/pkg/postgis-*上的文件以查看可用版本。
然后,使用Pacman降级到选择的版本,例如:

sudo pacman -U /var/cache/pacman/pkg/postgis-3.3.3-1-x86_64.pkg.tar.zst

字符串
这也可以解决Postgres本身的升级问题。
为了确保Manjaro将来不会自己搞砸版本,请编辑/etc/pacman.conf中的IgnorePkg行以阻止自动postgres更新(如果您已经在那里指定了一些软件包,请扩展该行)。

IgnorePkg = postgresql postgis

相关问题