4

我正在尝试使用 William Kingesbury 提供的二进制文件在 Mac OS X 上从 PostgreSQL 9.1 升级到 PostgreSQL 9.2,并且几个小时以来一直无法隔离可加载库的关键问题。

首先,我收到以下错误:

Could not load library "$libdir/postgis-1.5"
ERROR:  could not access file "$libdir/postgis-1.5": No such file or directory

Could not load library "$libdir/plr"
ERROR:  could not access file "$libdir/plr": No such file or directory

并最终发现这些扩展名都存放在/usr/local/pgsql-9.1/lib/目录中。

我在 9.1 中检查了我的所有数据库,但它们都没有\dx+在 psql 终端窗口中实际使用这些扩展。

如何从旧的 9.1 数据库中删除对这些库的引用?*.plr我从扩展文件夹(文件)和 中手动删除了它们/usr/local/pgsql-9.1/lib/,但在升级过程中我仍然遇到上述相同的错误。

我还尝试将名为plr.soand的库文件复制postgis-1.5.so到新/usr/local/pgsql-9.2/lib/目录,但是除了给我以下错误之外,这对结果没有明显影响:

Could not load library "$libdir/postgis-1.5"
ERROR: incompatible library "/usr/local/pgsql-9.2/lib/postgis-1.5.so": version mismatch
DETAIL: Server is version 9.2, library is version 9.1.

我大概可以弄清楚如何在 PostgreSQL 9.2 下安装 PostGIS-1.5,但是没有办法从旧安装中删除它吗?

4

2 回答 2

1

好的 - 在 William Kyngesbury 和 Denis 的帮助下,问题已得到解决 - 非常感谢!

旧 PostGIS 版本有一个卸载文件 ( .sql),默认位于以下目录中:

pgsql-9.1/share/contrib/postgis-2.0/uninstall_legacy.sql

正如 Denis 之前建议的那样,我还重新激活了 PostgreSQL 的 9.1 实例:

sudo ln -sfh pgsql-9.1 /usr/local/pgsql

下一步,我uninstall_legacy.sql在每个数据库中运行脚本。事实上,只在其中一个数据库中删除了几个函数,由于我不知道如何删除 PL/R,但同时怀疑我在这个数据库中创建了扩展,我在一个 SQL 之后删除了整个数据库倾倒。然后我再次重新激活了我的 PostgreSQL 9.2 实例并启动了它。

现在 pg_upgrade 进程运行没有错误,PostgreSQL 和 PostGIS 都再次顺利运行。

于 2013-04-28T11:31:12.133 回答
1

我大概可以弄清楚如何在 postgresql9.2 下安装 postgis-1.5

那将是正确的做法。

但应该有办法从旧安装中删除它?

好吧,您可以停用 9.2,重新激活(并启动)9.1,根据需要修改数据,重新转储数据,停用 9.1,重新激活并启动 9.2,然后重新导入数据……

您也可以通过手动编辑数据库转储来删除引用来进行管理。

但最后,为 9.2 安装 postgis-1.5 可能会更容易和更短。

于 2013-04-27T19:51:20.957 回答