Erreur PostgreSQL : canceling statement due to statement timeout

ERROR:  canceling statement due to statement timeout

L'instruction a duré plus longtemps que ne l'autorise statement_timeout, mesuré en temps horloge depuis la réception par le serveur — y compris tout temps passé à attendre des verrous. PostgreSQL l'a annulée et a annulé ses effets.

Ce que signifie cette erreur

Le SQLSTATE 57014 (query_canceled) couvre toutes les annulations d'instruction ; le message vous indique laquelle vous avez eue :

La subtilité qui compte : statement_timeout compte aussi les attentes de verrou. Une requête qui prend normalement 50 ms peut atteindre un timeout de 30 s parce qu'elle est restée derrière un ALTER TABLE de quelqu'un. Avant d'« optimiser » la requête, déterminez dans quel cas vous êtes.

Causes fréquentes

Comment la diagnostiquer

-- D'où vient la valeur active :
SELECT name, setting, source
FROM pg_settings
WHERE name = 'statement_timeout';

-- Surcharges par rôle/base :
SELECT * FROM pg_db_role_setting;

L'instruction annulée est écrite dans le journal du serveur avec l'erreur, vous savez donc exactement de quelle requête il s'agissait. Ensuite, séparez les deux cas :

Comment la corriger

🔍 Outil connexe : le visualiseur EXPLAIN ANALYZE — collez le plan de la requête qui a expiré et voyez quel nœud mange le temps.
🔍 À lire aussi : Comment lire EXPLAIN ANALYZE.