Error de PostgreSQL: canceling statement due to statement timeout

ERROR:  canceling statement due to statement timeout

La sentencia se ejecutó durante más tiempo del que permite statement_timeout, medido en tiempo de reloj desde que el servidor la recibió — incluido cualquier tiempo pasado esperando bloqueos. PostgreSQL la canceló y revirtió sus efectos.

Qué significa este error

El SQLSTATE 57014 (query_canceled) cubre todas las cancelaciones de sentencias; el mensaje te dice cuál te tocó:

El matiz que importa: statement_timeout cuenta también las esperas de bloqueo. Una consulta que normalmente tarda 50 ms puede alcanzar un timeout de 30 s porque se quedó detrás del ALTER TABLE de alguien. Antes de "optimizar" la consulta, averigua en qué caso estás.

Causas comunes

Cómo diagnosticarlo

-- De dónde viene el valor activo:
SELECT name, setting, source
FROM pg_settings
WHERE name = 'statement_timeout';

-- Overrides por rol/base de datos:
SELECT * FROM pg_db_role_setting;

La sentencia cancelada se escribe en el log del servidor junto con el error, así que sabes exactamente cuál era la consulta. Luego separa los dos casos:

Cómo solucionarlo

🔍 Herramienta relacionada: el visualizador de EXPLAIN ANALYZE — pega el plan de la consulta que hizo timeout y mira qué nodo se come el tiempo.
🔍 Lectura relacionada: Cómo leer EXPLAIN ANALYZE.