PostgreSQL:对大对象的权限被拒绝

时间:2016-12-06 08:47:27

标签: sql postgresql hibernate jdbc

从我的开发迁移到登台环境时,我在登台服务器上对PostgreSQL数据库进行hibernate sql调用时遇到以下错误。

开发环境中没有错误。我假设它是饱和数据库的特权问题。但是,我从未见过这个错误,我不知道在哪里看。有人可以建议吗?

  

引起:java.io.IOException:org.postgresql.util.PSQLException:错误:对大对象109138的权限被拒绝       at org.postgresql.largeobject.BlobInputStream.read(BlobInputStream.java:123)       在java.io.InputStream.read(InputStream.java:170)       at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)       at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)       at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)       在java.io.InputStreamReader.read(InputStreamReader.java:184)       在org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:71)

2 个答案:

答案 0 :(得分:2)

自PostgreSQL 9.0以来,大对象具有权限(表Service的列sendBroadcast(new Intent("DOWNLOAD_COMPLETE")); )。默认情况下,除了所有者(列lomacl)之外的任何人都没有对大对象的任何权限。

所以它似乎是一个版本迁移问题(例如,你没有使用较新版本的pg_largeobject_metadata来创建转储),或者你试图以大型对象的形式访问您的临时环境中的不同用户。

答案 1 :(得分:2)

postgresql.conf中将lo_compat_privileges更改为on。这对我有用