无法更新或删除表格中的行(Postgres)
我有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')
掉落触发:
drop trigger remove_unused_large_objects on photo;
正如我正确理解,我不需要这个字节字段的触发器,但我需要这样的清理大型对象。我对么? –
是的,有人(也许是你)已经改变了照片存储的方式,现在触发器不相关。 – klin
对,如果你使用的是大对象。但是,你会有一个整数或oid列来引用它们。除非你的代码做了一些可怕的错误,比如把oid干扰到bytea列。 –
尝试使用此
从那里的PrimaryKey = '您要删除' 照片删除;
我试过这样的方法,并得到了相同的错误 –
在psql的执行'\ d photo'并显示结果(编辑的问题)。 – klin
您似乎对大型物体感到困惑。你的字段类型是'bytea'类型的'image_data',但是你也想把它看作像'pg_largeobject'的大对象引用。这个领域实际上是什么?什么查询会导致错误? –
也许'lo_manage()'函数不够挑剔? – joop