从我的开发迁移到登台环境时,我在登台服务器上对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)
答案 0 :(得分:2)
自PostgreSQL 9.0以来,大对象具有权限(表Service
的列sendBroadcast(new Intent("DOWNLOAD_COMPLETE"));
)。默认情况下,除了所有者(列lomacl
)之外的任何人都没有对大对象的任何权限。
所以它似乎是一个版本迁移问题(例如,你没有使用较新版本的pg_largeobject_metadata
来创建转储),或者你试图以大型对象的形式访问您的临时环境中的不同用户。
答案 1 :(得分:2)
在postgresql.conf
中将lo_compat_privileges
更改为on
。这对我有用