PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dlaczego ta transakcja PostgreSQL daje OSTRZEŻENIE:nie ma transakcji w toku

To wydaje się być nieporozumieniem. Rozważ mój odważny nacisk :

OSTRZEŻENIE oczywiście należy do innej jednoczesnej transakcji , który nie rozpoczął jawnej transakcji. commit jest niewłaściwie umieszczony tam , ponieważ działa w trybie automatycznego zatwierdzania.

Jeśli będziesz dalej czytać swój dziennik, prawdopodobnie znajdziesz poniżej wpis dotyczący zatwierdzenia:

Debugowanie

Jeśli nie znajdziesz ani tego, ani rollback wpis ani błąd, sprawdziłbym pod kątem problemów w Twojej aplikacji, pozostawiając niezatwierdzone transakcje zombie, co byłoby złą rzeczą .

Rozpocznij dochodzenie, sprawdzając widok systemowy pg_stat_activity podczas połączenia z bazą danych:

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 wartość idle niekoniecznie jest podejrzane - po prostu sesja, która czeka na dane wejściowe.
Ale idle in transaction i idle in transaction (aborted) są.

Więcej w instrukcji tutaj lub te powiązane odpowiedzi:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Potrzebuję funkcji do wybrania 88 losowych wierszy z tabeli (bez duplikatów)

  2. Nadchodzi Postgresql JSONB. Czego teraz użyć? Hsklep? JSON? EAV?

  3. PostgreSQL:jak ustawić search_path z wnętrza funkcji?

  4. Django:zduplikowana wartość klucza narusza ograniczenie unikalności

  5. fe_sendauth:brak błędu podanego hasła w postgresql + laravel