SQLSTATE 55P02Severity mediumLab verified

Incident brief

Cannot change runtime parameter

A session tried to SET a parameter that can only be changed by restarting the server. PostgreSQL rejected the SET instead of silently ignoring it.

Reproduced on PostgreSQL 16.14Verified 2026-07-16 (Docker lab, PostgreSQL 16.14)Reviewed by Verified against PostgreSQL 16.14 in an isolated lab environment

In 10 seconds

What
Cannot change runtime parameter
What triggers it
Run SET max_connections = 200; inside an ordinary session.
The fix
Use ALTER SYSTEM SET to write the new value, then actually restart the server — reloading the config file (pg_reload_conf()) is not enough for a postmaster-context parameter.
Proof
Reproduced on PostgreSQL 16.14 → SET max_connections = 200; inside a session was rejected with SQLSTATE 55P02, because max_connections is a postmaster-context parameter.

The fix

What to do right now

The immediate, application-level response to this error.

  • Use ALTER SYSTEM SET to write the new value, then actually restart the server — reloading the config file (pg_reload_conf()) is not enough for a postmaster-context parameter.
  • Don't assume pg_reload_conf() returning true means the change took effect — see the premium counterexample for proof it doesn't, for this parameter.
Fix — SQL
ALTER SYSTEM SET max_connections = 150;
-- then actually restart the server (not just pg_reload_conf())

Related & next steps

Follow the thread

Everything this error touches — jump straight to the sibling error, term, runbook, or parameter.

Verification

PG 16.14
Last verified
2026-07-16 (Docker lab, PostgreSQL 16.14)
Reviewed by
Verified against PostgreSQL 16.14 in an isolated lab environment
Audit status
reviewed