【问题标题】:PostgreSQL: Permission denied for large objectPostgreSQL:大对象的权限被拒绝
【发布时间】:2016-12-06 08:47:27
【问题描述】:

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

开发环境没有错误。我假设这是饱和数据库上的特权问题。但是,我从来没有见过这个错误,我不知道去哪里找。谁能给点建议?

原因:java.io.IOException: org.postgresql.util.PSQLException: ERROR: permission denied for large object 109138 在 org.postgresql.largeobject.BlobInputStream.read(BlobInputStream.java:123) 在 java.io.InputStream.read(InputStream.java:170) 在 sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) 在 sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) 在 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)

【问题讨论】:

标签: sql postgresql hibernate jdbc


【解决方案1】:

从 PostgreSQL 9.0 开始,大对象具有权限(表 pg_largeobject_metadata 的列 lomacl)。默认情况下,除了所有者(lomowner 列)之外,没有人对大型对象拥有任何权限。

因此,这似乎是版本迁移问题(例如,您没有使用较新版本中的 pg_dump 来创建转储),或者您正试图以不同用户的身份访问大对象暂存环境。

【讨论】:

  • 是的,就是这样。对我来说是后者。
【解决方案2】:

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

【讨论】:

  • 这是一个快速修复(从 9.? 迁移到 10)
猜你喜欢
  • 2010-09-25
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 2017-11-04
  • 2012-11-03
  • 2023-04-09
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多