I installed two PostgreSQL servers in my computer. One is 9.1 and the other is 9.3. I need both servers installed.
When I run pg_dump, however, I get a version mismatch error:
server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch
How can I solve it? (Cannot uninstall either version - I installed the 9.1 first and the 9.3 many months later - I need both database servers installed).
TL;DR: if both PostgreSQL instances are managed by the Ubuntu packages (as they should), just use the
--cluster
option to select the PostgreSQL instance to backup, and it will automatically choose the corresponding version of pg_dump:pg_dump --cluster 9.1/main [other pg_dump options]
or
pg_dump --cluster 9.3/main [other pg_dump options]
.main
is just a default value, runpg_lsclusters
to see your actual names in theCluster
column.How it works: as installed by the Ubuntu packages,
/usr/bin/pg_dump
is actually a soft-link to/usr/share/postgresql-common/pg_wrapper
, whose purpose is precisely to select the correct instance and run the corresponding binary.--cluster
does not exist in the stock PostgreSQL commands, it's a Debian/Ubuntu addition that is meant to address this multiple versions/multiple paths problem.This is the same for
psql
,createdb
,createuser
, etc. about 18 postgres commands in/usr/bin
are actually managed bypg_wrapper
.See man pg_wrapper for more.
You can use:
to find your versions of
pg_dump
in my case:/usr/pgsql-9.6/bin/pg_dump
so next we can do:
in order to update to the one we need
If you're running docker, you can run any version of pg_dump without having to manage multiple installations. This will write a file to
/path/to/dump/to/myfilename.dump
using postgres 12.5:--rm
removes the container when the command is done--network=host
connects the container to the host local network-v ...
mounts your host directory (/path/to/dump/to
) to a temp directory inside the containerYou just have to make sure that the directory you mount to (
/tmp/dump
) is the same as the directory that pg_dump is writing to.Then you can change 12.5 to whatever version you want.