LINUX.ORG.RU

Неполучается записать большой блоб в postgresql с помощью qsqlquery

 ,


1

1

postgresql-7.4.1
Qt-4.5.2

Пытаюсь записать большой файл(больше 50 метров)
Кидает вот что:

ERROR:  out of memory
DETAIL:  Failed on request of size 268435456.
WARNING:  AbortTransaction and not in in-progress state
message type 0x5a arrived from server while idle
FATAL:  invalid frontend message type 204

В чем проблема?

★★★★★

Ответ на: комментарий от maxcom

Другого нет(использовать можно только Линтер):(
Есть варианты как без изменения базы можно обойтись?
Не может быть виноват Qt?

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

Может быть разделить файл на несколько частей и обернуть всю заливку в одну транзакцию?

P.S. Кто кидает «вот что»?

trex6 ★★★★★
()
Ответ на: комментарий от deterok

Судя по всему, эти ошибки приходят из libpq, а туда попадают от сервера. В логах сервера что-нибудь есть?

trex6 ★★★★★
()
Ответ на: комментарий от deterok

ну тогда не удивительно - bytea загружаются в память сервера (и потом клиента) целиком. Увеличивайте work_mem в postgresql.conf

Для PostgreSQL более правильный способ это использовать «родные» блобы сервера (на которые ссылаются через oid, а управляются функциями lo_*). Они читаются поблочно.

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Спасибо за совет. Тестить наверное будем после НГ.

deterok ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.