PostgreSQL问题:无法访问文件“$ libdir / plpgsql”:没有这样的文件或目录

时间:2011-07-29 13:48:51

标签: postgresql

我在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)

我搜索了很多,大多数解决方案指向错误的安装。但这是我的测试数据库,它已经运行了很长时间没有问题。插入工作也正常。问题仅出现在选定查询中。

3 个答案:

答案 0 :(得分:6)

显然,您将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

答案 1 :(得分:2)

我遇到了同样的问题:另一个postgres服务器实例(8.4)干扰了9.1的一个;当8.4实例被移除时,它可以工作。

答案 2 :(得分:-1)

有时可以在运行时从系统中删除另一个实例(例如,您在不停止和迁移数据的情况下执行gentoo更新和depclean)。所以错误似乎特别神秘。

解决方案通常是对旧版本进行插槽安装/选择(以gentoo术语,或者只是降级其他发行版),运行其pg_dumpall,然后卸载/重新安装新版本并导入数据。

这对我来说非常轻松