PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо тази транзакция на PostgreSQL дава ПРЕДУПРЕЖДЕНИЕ:няма транзакция в ход

Това изглежда е недоразумение. Помислете за моето удебелено ударение :

ПРЕДУПРЕЖДЕНИЕТО очевидно принадлежи на различна едновременна транзакция , което не е стартирало изрична транзакция. 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) са.

Повече в ръководството тук или тези свързани отговори:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подреждане на резултатите от заявката по числови низове в django (backend на postgres)

  2. каква е escape последователността за тире (-) в PostgreSQL

  3. как да използвате правилно оператор if postgresql

  4. Генерирайте n реда от NULL в PostgreSQL

  5. Postgres връзката е бавна от PHP