2016-08-02 83 views
1

我有bytea字段的表。當我嘗試從此表中刪除一行時,出現此類錯誤:無法更新或刪除表格中的行(Postgres)

[42704] ERROR: large object 0 does not exist 

你能幫我解決這種情況嗎?

編輯。從命令\d photo信息:

Table "public.photo" 
    Column |   Type   | Modifiers 
------------+------------------------+----------- 
id   | character varying(255) | not null 
ldap_name | character varying(255) | not null 
file_name | character varying(255) | not null 
image_data | bytea     | 
Indexes: 
    "pk_photo" PRIMARY KEY, btree (id) 
    "photo_file_name_key" UNIQUE CONSTRAINT, btree (file_name) 
    "photo_ldap_name" btree (ldap_name) 
Triggers: 
    remove_unused_large_objects BEFORE DELETE OR UPDATE ON photo FOR EACH ROW EXECUTE PROCEDURE lo_manage('image_data') 
+0

在psql的執行'\ d photo'並顯示結果(編輯的問題)。 – klin

+0

您似乎對大型物體感到困惑。你的字段類型是'bytea'類型的'image_data',但是你也想把它看作像'pg_largeobject'的大對象引用。這個領域實際上是什麼?什麼查詢會導致錯誤? –

+0

也許'lo_manage()'函數不夠挑剔? – joop

回答

1

掉落觸發:

drop trigger remove_unused_large_objects on photo; 
+0

正如我正確理解,我不需要這個字節字段的觸發器,但我需要這樣的清理大型對象。我對麼? –

+0

是的,有人(也許是你)已經改變了照片存儲的方式,現在觸發器不相關。 – klin

+0

對,如果你使用的是大對象。但是,你會有一個整數或oid列來引用它們。除非你的代碼做了一些可怕的錯誤,比如把oid干擾到bytea列。 –

0

嘗試使用此

從那裏的PrimaryKey = '您要刪除' 照片刪除;

+0

我試過這樣的方法,並得到了相同的錯誤 –