Lesstep
GitHub Actions · Ubuntu 26.04 · Checked November 4, 2026

unrecognized configuration parameter "transaction_timeout": pg_dump 18 on Ubuntu 26.04

ubuntu-latest is moving from Ubuntu 24.04 to 26.04 between October 19 and November 19, 2026 (what else changes). The runner image's PostgreSQL goes from 16.15 to 18.6 (the image readmes), and apt-get install postgresql-client now gives PostgreSQL 18 too (18+290ubuntu1). So pg_dump, pg_restore and psql in your steps are 18, while a postgres:16 service container is still 16.

What it looks like

psql:dump.sql:13: ERROR:  unrecognized configuration parameter "transaction_timeout"

pg_dump 17 and later write SET transaction_timeout = 0; near the top of every dump. The setting exists only since PostgreSQL 17 (PostgreSQL 17 documentation), so loading the dump into a 16 or older server fails on that line. With ON_ERROR_STOP or --single-transaction the whole restore stops there. The SQL that pg_restore 18 writes from a custom-format dump has the same line.

The other direction shows up on jobs that still land on 24.04, or that pin it, against a 17 or 18 server:

pg_dump: error: aborting because of server version mismatch
pg_dump: detail: server version: 17.6; pg_dump version: 16.15 (Ubuntu 16.15-1.pgdg24.04+2)

Where the reports came from

Fix: dump with the server's own pg_dump

- run: docker exec ${{ job.services.postgres.id }} pg_dump -U postgres app > dump.sql

The service container has the pg_dump that matches its server, so the dump fits the server whatever the runner image is. job.services.<id>.id is the container ID GitHub gives each service. Restore the same way, with docker exec -i ... psql.

Or match the service to the client

Moving the service to PostgreSQL 17 or later makes a pg_dump 18 file load cleanly. One of the projects above went to postgis/postgis:17-3.5 (open-klant 4d312dde). Until November 19, though, the same job can land on 24.04, where pg_dump 16 refuses a 17 server. Either pin the job with runs-on: ubuntu-26.04, or use the docker exec form, which works on both.

Or install the client version you need

The image installs PostgreSQL from the PostgreSQL apt repository and then removes that repository, so postgresql-client-16 is not available until you add it back (resolute-pgdg exists for 26.04). After installing, call the versioned binary rather than plain pg_dump, which can still run the image's own version (RESIDIO's job installed 17 and got 16).

/usr/lib/postgresql/16/bin/pg_dump -h localhost -U postgres app > dump.sql

Pinning the job to runs-on: ubuntu-24.04 also brings back client 16, until GitHub retires that image.

Deleting the SET transaction_timeout line with sed gets past this one line, but a restore drill then no longer tests what a real restore would do, and later versions may add other settings.

Telling it apart

Other 26.04 failures

See failed jobs from IntelliJ IDEA

Pipeline Inbox for GitHub Actions Workflows, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists the runs of all your repositories in an IDE tool window, with their jobs and steps, and your current branch's runs are in the status bar. Reading is free; re-running failed jobs, cancelling, running workflows and reviewing deployments are Pro (US$1.50 a month, with a 30-day trial).

Get it on JetBrains Marketplace

GitHub and GitHub Actions are trademarks of GitHub, Inc.; Ubuntu is a trademark of Canonical Ltd.; PostgreSQL is a registered trademark of the PostgreSQL Community Association; Docker is a trademark of Docker, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with, sponsored or endorsed by GitHub, Inc., Canonical, the PostgreSQL project, Docker, Inc. or JetBrains.

More: "The ubuntu-latest label will migrate to Ubuntu 26" · Postgres never starts in Docker on Ubuntu 26.04 · GitHub Actions plugins for IntelliJ IDEA compared · 日本語