Errore PostgreSQL: canceling statement due to statement timeout

ERROR:  canceling statement due to statement timeout

Lo statement è girato più a lungo di quanto consente statement_timeout, misurato in tempo di orologio da quando il server l'ha ricevuto — incluso qualsiasi tempo passato ad attendere lock. PostgreSQL l'ha annullato e ne ha fatto il rollback degli effetti.

Cosa significa questo errore

Lo SQLSTATE 57014 (query_canceled) copre tutte le cancellazioni di statement; il messaggio ti dice quale hai avuto:

La sottigliezza che conta: statement_timeout conta anche le attese sui lock. Una query che normalmente impiega 50 ms può colpire un timeout di 30 s perché è rimasta dietro l'ALTER TABLE di qualcuno. Prima di "ottimizzare" la query, scopri in quale caso ti trovi.

Cause comuni

Come diagnosticarlo

-- Da dove viene il valore attivo:
SELECT name, setting, source
FROM pg_settings
WHERE name = 'statement_timeout';

-- Override per ruolo/database:
SELECT * FROM pg_db_role_setting;

Lo statement annullato viene scritto nel log del server insieme all'errore, quindi sai esattamente quale query era. Poi separa i due casi:

Come risolverlo

🔍 Strumento correlato: il visualizzatore EXPLAIN ANALYZE — incolla il piano della query andata in timeout e vedi quale nodo si mangia il tempo.
🔍 Lettura correlata: Come leggere EXPLAIN ANALYZE.