PostGIS
切换深色/浅色/自动模式 - PostGIS 空间数据库 切换深色/浅色/自动模式 - PostGIS 空间数据库 切换深色/浅色/自动模式 - PostGIS 空间数据库 返回主页 - PostGIS 空间数据库

导致“postgis.backend”已设置的原因

错误“postgis.backend”已设置时常出现在 PostGIS 邮件列表中。该问题通常在升级期间或升级后出现。

问题类似于以下内容

从 2.1 升级到 Postgis 2.3 后,我的服务器日志中填充了以下消息:警告“postgis.backend”已设置,在重新连接之前无法更改

可能原因 1:旧功能

如果您安装了 legacy.sql 文件,尤其是在 PostGIS 3+ 版本发布之前,旧版函数可能仍指向旧 PostGIS 库的位置。

解决方法是运行旧的 legacy_uninstall.sql,然后重新安装新的 legacy.sql 文件。

legacy.sql 脚本通常位于 PostgreSQL share\contrib\postgis 目录中。例如,对于 9.4 PostgreSQL 和 2.1 PostGIS

# Remove the old functions
psql -d your_db -f /usr/share/postgresql/9.4/contrib/postgis-2.1/uninstall_legacy.sql

# If you want still need legacy functions
psql -d your_db -f /usr/share/postgresql/9.4/contrib/postgis-3.2/legacy.sql

一般来说,您可能不想使用旧版函数,因此在删除它们后检查并查看您的应用程序是否都正常,也许您不需要再次安装它们。

可能原因 2:旧的 postgis_sfcgal 仍存在

如果您的 postgis_sfcgal 版本是通过扩展安装的。这将是 postgis 2.2 或更高版本,您可以运行

ALTER EXTENSION postgis_sfcgal UPDATE;

如果您有多个版本的 PostGIS,并且不想要最后安装的版本,您可能需要执行此操作。确保版本与您的 postgis 版本匹配,因为这两个扩展使用相同的 postgis 库。

ALTER EXTENSION postgis_sfcgal UPDATE TO "2.3.2";

可能原因 3:旧的 postgis_sfcgal 仍存在

您正在运行过时的微版本。

早在我们在 PostGIS 中首次引入 GUC 时,升级期间存在一个错误,在小版本之间切换时会触发该错误。此问题早已得到修复,因此请确保您已安装最新的小版本微版本,然后执行。

ALTER EXTENSION postgis UPDATE;

可能原因 4:混合手动和扩展安装

也许您做了一些非正统的事情,设法在没有扩展的情况下安装了旧版本的 PostGIS,并在扩展的情况下安装了新版本。或者,您可能有一些函数是从不完整的升级或安装中遗留下来的。

因此,要修复,您必须找到它们并更新它们。以下是一个查询,用于查找您已安装的 postgis 库版本数以及每个版本的函数数

SELECT probin, count(*)
FROM pg_catalog.pg_proc
WHERE probin LIKE '%/postgis%'
GROUP BY probin
ORDER BY probin;

在正常的安装中,您应该只有一行类似于此。您的版本号可能不同,计数也可能不同。

|   probin            | count |
|---------------------|-------|
|$libdir/postgis-2.4  |   446 |

如果您有多行,则表示您混合了库版本

| probin             | count
---------------------+-------
$libdir/postgis-2.4  |   446
$libdir/postgis-2.1  |   4

运行此查询以使用您列出的最新版本替换 postgis-2.1

UPDATE pg_catalog
SET pg_proc = '$libdir/postgis-2.4'
WHERE probin LIKE '%/postgis-2.1%';