PostgreSQL details
Unimus 2.5 and older support only PostgreSQL 11 and below. From Unimus 2.6 onward, all newer PostgreSQL versions are supported. If you're on PostgreSQL 11 and want to move to a newer version, follow the steps below.
...
Check your target version before you start. Three of the steps below depend on it:
| 12, 13 | 14–17 | 18 | |
|---|---|---|---|
New cluster needs --no-data-checksums | no | no | yes |
| Migrated md5 passwords still work | yes | no | no |
| Where pg_upgrade writes the list of tables with OIDs | working directory | <new datadir>/pg_upgrade_output.d/<timestamp>/ | same as 14–17 |
The examples below use PostgreSQL 18 on port 5433 as the target. Change the version and port to match your setup.
...
You don't need to handle OIDs here. pg_dump from version 12 onward drops them automatically.
Common errors
| Error | Fix |
|---|---|
You must have read and write access in the current directory | cd /tmp before running pg_upgrade. |
could not connect to source postmaster | Add -o and -O with config_file= (step 7). |
old cluster does not use data checksums but the new one does | Recreate the 18 cluster with --no-data-checksums. |
Checking for tables WITH OIDS – fatal | See step 6. The file pg_upgrade lists tells you which tables. |
password authentication failed for user "unimus" | md5 password on a 14+ target. Run ALTER USER ... WITH PASSWORD (step 3). |
unsupported version (1.16) in file header | The dump was made by a newer pg_dump than the target server. Use the target version's pg_dump. |
analyze_new_cluster.sh prints Done but statistics stay empty | The script runs vacuumdb without a port, so it uses 5432. Run vacuumdb -p <new port> --all --analyze-in-stages yourself. |