我正在尝试使用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中检查了所有数据库,但实际上没有一个在psql终端窗口中使用\dx+
扩展名。
如何从旧的9.1数据库中删除对这些库的引用?我从扩展文件夹(*.plr
文件)和/usr/local/pgsql-9.1/lib/
手动删除了它们,但在升级过程中我仍然遇到上述错误。
我还尝试将名为plr.so
和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,但是没有办法从旧安装中删除它吗?
答案 0 :(得分:1)
我可以想象如何在postgresql9.2下安装postgis-1.5
这是正确的做法。
但应该有办法从旧安装中删除它吗?
好吧,您可以停用9.2,重新激活(并启动)9.1,根据需要修改数据,重新转储数据,停用9.1,重新启动并启动9.2,然后重新导入数据......
您也可以通过手动编辑数据库转储来删除引用。
但最后,为9.2安装postgis-1.5可能更容易也更短。
答案 1 :(得分: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再次运行顺利。