2016-12-06 28 views
1

從我的開發遷移到登臺環境時,在對登臺服務器上的postgresSQL數據庫進行hibernate sql調用期間遇到以下錯誤。PostgresSQL:對於大型對象拒絕權限

在開發環境中沒有錯誤。我假設它是飽和分貝的權限問題。但是,我從來沒有見過這個錯誤,我不知道在哪裏看。任何人都可以建議嗎?

Caused by: java.io.IOException: org.postgresql.util.PSQLException: ERROR: permission denied for large object 109138 at org.postgresql.largeobject.BlobInputStream.read(BlobInputStream.java:123) at 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) at java.io.InputStreamReader.read(InputStreamReader.java:184) at org.hibernate.type.descriptor.java.DataHelper.extractString(DataHelper.java:71)

+1

https://www.postgresql.org/message-id/[email protected]可能是其中一個原因 – StanislavL

+1

類似的問題在這裏回答http://stackoverflow.com/q/26381604/3503187 – Ubercool

+1

快速理清這種情況,你可以在'postgresql.conf'中加入'lo_compat_privilege = on' – eddyce

回答

2

因爲PostgreSQL 9.0,大的對象具有權限(表pg_largeobject_metadatalomacl列)。默認情況下,除擁有者(列lomowner)以外的任何人都不具有任何大型對象的權限。

因此,看起來無論是版本遷移問題(例如,您沒有使用來自較新版本的pg_dump來創建轉儲),或者您試圖在分段中以不同用戶的身份訪問大對象環境。

+1

yup,就是這樣。對我來說是後者。 – Jake