powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ERROR: current transaction is aborted, commands ignored until end of transaction block
6 сообщений из 6, страница 1 из 1
ERROR: current transaction is aborted, commands ignored until end of transaction block
    #38755125
LVA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LVA
Гость
адаптируем приложение под постгресс. работаем через JDBC.
в одной транзакции несколько DML операций.
третья DML операция - batch insert - выдает ошибку.
вставляет 1000 записей. если одна запись не вставится (например, сработал уникальный ключ), то необходимо обработать ошибку, не откатывая текущую транзакцию. как быть ? откат транзакции недопустим.
...
Рейтинг: 0 / 0
ERROR: current transaction is aborted, commands ignored until end of transaction block
    #38755150
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LVA,

либо устранить ошибки (например, проверять уникальность в самом запросе или в before insert/update триггере), либо обработать в plpgsql, либо отказаться от транзакции.
...
Рейтинг: 0 / 0
ERROR: current transaction is aborted, commands ignored until end of transaction block
    #38755180
LVA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LVA
Гость
Alexius,

приложение высоконагруженное. поэтому необходимо делать batch. если по каждой записи проверять наличие в БД, то просядем по производительности. да и некорректно это, приложение многопоточное. на момент проверки обе сессии могут увидеть, что записи в БД еще нет. поэтому совершенно нормально обрабатывать такое исключение. то есть даже и без batch insert встает такая же проблема.

от транзакции нельзя отказаться. это же бизнес логика. либо всё, либо ничего.

авторлибо обработать в plpgsql
имеется ввиду явный savepoint ?

настройками постгресса никак нельзя повлиять на обработку транзакции ? хотелось бы, чтобы он автоматом откатывал текущий DML, как это делает oracle (до неявного savepoint), позволяя продолжить транзакцию.
...
Рейтинг: 0 / 0
ERROR: current transaction is aborted, commands ignored until end of transaction block
    #38755321
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LVA,

Явным образом обернуть batch insert в `SAVEPOINT` и в случае ошибки сделать `ROLLBACK TO SAVEPOINT` рассматривали?

В Postgres'е нету неявных точек (как в ORACLE), тут действительно транзакция — все или ничего.
...
Рейтинг: 0 / 0
ERROR: current transaction is aborted, commands ignored until end of transaction block
    #38756103
LVA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LVA
Гость
vyegorov,

сейчас как раз рассматриваем, но с большой неохотой :) дело в том, что не хотелось завязываться на специфику БД.
...
Рейтинг: 0 / 0
ERROR: current transaction is aborted, commands ignored until end of transaction block
    #38756353
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LVAадаптируем приложение под постгресс
LVAприложение высоконагруженное
LVAдело в том, что не хотелось завязываться на специфику БД
LVAесли одна запись не вставится (например, сработал уникальный ключ), то необходимо обработать ошибку, не откатывая текущую транзакцию. как быть ? откат транзакции недопустим.
LVAот транзакции нельзя отказаться. это же бизнес логика. либо всё, либо ничего.

Почему-то на ум приходит только осеннее обострение.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ERROR: current transaction is aborted, commands ignored until end of transaction block
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]