Това изглежда е недоразумение. Помислете за моето удебелено ударение :
ПРЕДУПРЕЖДЕНИЕТО очевидно принадлежи на различна едновременна транзакция , което не е стартирало изрична транзакция. commit
е неправилно поставентам , тъй като работи в режим на автоматично предаване.
Ако продължите да четете дневника си, вероятно ще намерите запис за ангажимента по-надолу:
Отстраняване на грешки
Ако не намерите нито това, нито rollback
запис, нито грешка, бих проверил за проблеми в приложението ви, оставяйки незадължителни зомби транзакции, което би било лошо нещо .
Започнете разследването, като проверите системния изглед pg_stat_activity
докато сте свързани с вашата база данни:
SELECT *
FROM pg_stat_activity
WHERE datname = current_database() -- only current database
AND pid <> pg_backend_pid() -- except your current session
AND state LIKE 'idle%';
state
стойност idle
не е непременно подозрително - просто сесия, която чака въвеждане.
Но idle in transaction
и idle in transaction (aborted)
са.
Повече в ръководството тук или тези свързани отговори:
- Как да премахна PostgreSQL база данни, ако има активни връзки към нея?
- Има ли таймаут за неактивни PostgreSQL връзки?