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
- A dump-and-reload check with a
postgis/postgis:16-3.5service andpostgresql-clientfrom the runner's apt failed in several projects that share that workflow, in the same week (open-zaak #2616, referentielijsten #188, open-product #386). - A backup-and-restore drill against a
postgres:16-alpineservice: the backup passed and the restore failed (evolith #35). - The version mismatch, on 24.04: installing
postgresql-client-17did not help, becausepg_dumpstill ran the image's 16 (RESIDIO #954).
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
pg_dump --versionprints 18.x on 26.04 and 16.x on 24.04. Print it in the job so the log says which one ran.- Look at "Set up job": the Runner Image group shows the image. Until November 19 a re-run can land on the other image, so a green re-run proves nothing.
Other 26.04 failures
- Docker-in-Docker on Ubuntu 26.04: the legacy iptables modules are not loaded, so a dockerd inside a container that uses
iptables-legacy, such as the dev container docker-in-docker feature:2or:3, fails with "can't initialize iptables table `nat'"; move the feature to:4or load the modules on the runner. - "Error: write EINVAL" from every WebdriverIO worker on Ubuntu 26.04: v9 starts workers through
xvfb-run, and the 26.04 one does not pass on the IPC channel; fixed in 9.33.1, which npm'slatesttag does not point to yet. - Postgres never starts in Docker on Ubuntu 26.04: newer kernels such as 7.0.0-42 run container processes as
docker-default//&unconfined, so they cannot signal each other andgosuhangs at 100% CPU; reported on self-hosted runners so far. - "version `GLIBC_2.43' not found" after building on Ubuntu 26.04: glibc is 2.43, so binaries built there can need
GLIBC_2.42orGLIBC_2.43and fail to start on Ubuntu 24.04, Debian 13 and older; build releases on an older image and check the floor in CI. - apt on Ubuntu 26.04: renamed and removed packages.
- "coreutils: unknown program": most core tools are uutils.
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 · 日本語