|
|
|
ERROR: current transaction is aborted, commands ignored until end of transaction block
|
|||
|---|---|---|---|
|
#18+
адаптируем приложение под постгресс. работаем через JDBC. в одной транзакции несколько DML операций. третья DML операция - batch insert - выдает ошибку. вставляет 1000 записей. если одна запись не вставится (например, сработал уникальный ключ), то необходимо обработать ошибку, не откатывая текущую транзакцию. как быть ? откат транзакции недопустим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 18:22:28 |
|
||
|
ERROR: current transaction is aborted, commands ignored until end of transaction block
|
|||
|---|---|---|---|
|
#18+
LVA, либо устранить ошибки (например, проверять уникальность в самом запросе или в before insert/update триггере), либо обработать в plpgsql, либо отказаться от транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 18:45:12 |
|
||
|
ERROR: current transaction is aborted, commands ignored until end of transaction block
|
|||
|---|---|---|---|
|
#18+
Alexius, приложение высоконагруженное. поэтому необходимо делать batch. если по каждой записи проверять наличие в БД, то просядем по производительности. да и некорректно это, приложение многопоточное. на момент проверки обе сессии могут увидеть, что записи в БД еще нет. поэтому совершенно нормально обрабатывать такое исключение. то есть даже и без batch insert встает такая же проблема. от транзакции нельзя отказаться. это же бизнес логика. либо всё, либо ничего. авторлибо обработать в plpgsql имеется ввиду явный savepoint ? настройками постгресса никак нельзя повлиять на обработку транзакции ? хотелось бы, чтобы он автоматом откатывал текущий DML, как это делает oracle (до неявного savepoint), позволяя продолжить транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 19:21:56 |
|
||
|
ERROR: current transaction is aborted, commands ignored until end of transaction block
|
|||
|---|---|---|---|
|
#18+
LVA, Явным образом обернуть batch insert в `SAVEPOINT` и в случае ошибки сделать `ROLLBACK TO SAVEPOINT` рассматривали? В Postgres'е нету неявных точек (как в ORACLE), тут действительно транзакция — все или ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 22:55:24 |
|
||
|
ERROR: current transaction is aborted, commands ignored until end of transaction block
|
|||
|---|---|---|---|
|
#18+
vyegorov, сейчас как раз рассматриваем, но с большой неохотой :) дело в том, что не хотелось завязываться на специфику БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 13:32:55 |
|
||
|
ERROR: current transaction is aborted, commands ignored until end of transaction block
|
|||
|---|---|---|---|
|
#18+
LVAадаптируем приложение под постгресс LVAприложение высоконагруженное LVAдело в том, что не хотелось завязываться на специфику БД LVAесли одна запись не вставится (например, сработал уникальный ключ), то необходимо обработать ошибку, не откатывая текущую транзакцию. как быть ? откат транзакции недопустим. LVAот транзакции нельзя отказаться. это же бизнес логика. либо всё, либо ничего. Почему-то на ум приходит только осеннее обострение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 15:58:29 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=123&tid=1998479]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 312ms |

| 0 / 0 |
