PostgreSQL问题:无法访问文件"$libdir/plpgsql":没有这个文件或目录。

7

我在PostgreSQL中遇到了这个异常:

org.postgresql.util.PSQLException: ERROR: could not access file "$libdir/plpgsql": No such file or directory
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1721)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1489)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:193)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:337)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236)
    at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205)

我搜索了很多,大多数解决方案都指向错误的安装。但这是我的测试数据库,长时间以来一直没有问题。插入操作也正常工作。问题只出现在选择查询中。


你的测试数据库使用的是哪个操作系统? - Joey Adams
3个回答

7

显然,你将 PostgreSQL 的 lib 目录移动到了错误的位置。为了确认这一点,请在 psql 中尝试以下操作:

> SET client_encoding TO iso88591;
ERROR:  could not access file "$libdir/utf8_and_iso8859_1": No such file or directory

如果您收到此类错误消息,则我的理论是正确的。您需要找出这些文件在哪里,或者您可以重新安装PostgreSQL以恢复它们。
要查找$libdir指的是什么,请运行以下命令:
pg_config --pkglibdir

对我来说,这将产生:
/usr/lib/postgresql

感谢您的建议。我会在周一进行检查。但是,如果像您所说的那样,lib目录存在问题,那么插入操作也应该失败,对吗?正如我在第一篇帖子中提到的,插入操作是有效的,但选择操作失败了。操作系统是CentOS 5X。 - rajesh
数据库安装出现了问题。我们已经将其移动到一个单独的盒子中。感谢您的帮助。 - rajesh

2

我有同样的问题:另一个PostgreSQL服务器实例(8.4)干扰了9.1的一个实例;当删除8.4实例时,它就可以正常工作。


0

另一个实例有时可以在仍在运行时从系统中删除(例如,您进行Gentoo更新和depclean而不停止和迁移数据)。因此,错误似乎特别神秘。

解决方案通常是执行旧版本的插槽安装/eselect(在Gentoo术语中),或者在其他发行版上简单地降级,运行其pg_dumpall,然后卸载/重新安装新版本并导入数据。

这对我来说非常轻松。


Gentoo的插槽正是我的问题所在,谢谢。当更高版本(插槽)被安装时,当前运行的版本不幸被删除了。很遗憾有人因对Gentoo的无知而对你的回答进行了负评。我给你一个平衡的赞成票。 - Pistos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接