I originally installed postgres 9.2 on Ubuntu and later upgraded to 9.3 according to the instructions here: http://www.postgresql.org/download/linux/ubuntu/ (using the postgres apt repository).

However, pg_dump, which is an alias for /usr/share/postgresql-common/pg_wrapper, did not get upgraded.

pg_dump: server version: 9.3.4; pg_dump version: 9.2.8
pg_dump: aborting because of server version mismatch

How do I upgrade this? I have tried to figure out which packages require update, but I'm not really even sure that that's the correct thing to do.

6 Answers 6


Turns out that installing the 9.3 client does not auto uninstall the 9.2 client, and if they're both on the machine like this, then that's what you get. The answer is to remove the postgresql-client-9.2 (or whatever the appropriate old version is in your case).

  • 3
    For upgrading client: Add the postgresql repo like this postgresql.org/download/linux/ubuntu Then run apt-cache search postgresql-client-9and pick whichever suits your needs.
    – Gesias
    Feb 20, 2015 at 14:54
  • 1
    You might want to also know that upgrading pg_dump first requires apt-get --only-upgrade install postgresql-client after which you have to uninstall the previous client version: apt-get --purge remove postgresql-client-9.2, for example.
    – sameers
    Jan 27, 2016 at 6:05

you may want to check output of the command

dpkg -l | grep postgres

to see which versions are installed and active pg_dump is usually part of postgresql-client-common package.

(And edit your question, It is not clear how did you upgrade from version 9.3 to 9.3 ... )


I managed to fix my issues by uninstalling the postgresql client

sudo apt-get remove postgresql-client-common

And then re-installing

  sudo apt-get install postgresql-client-11
  • 1
    E: Unable to locate package postgresql-client-11 ... is there some way to update the postgres index Aug 8, 2019 at 23:36
  • I believe that you might need to update your apt indexes, as I don't know if postgresql package is part of the default index set. try googling 'install postgresql 11 on ubuntu' for more details. Aug 9, 2019 at 7:36
  • Here is an explicit link to installing postgresql 11 client tools: computingforgeeks.com/install-postgresql-11-on-ubuntu-linux
    – nsof
    Jul 5, 2020 at 9:16
  • You might need to add a repository for the latest prostgres versions: postgresql.org/download/linux/ubuntu
    – Sebastian
    Dec 16, 2021 at 10:26

If you need to have several versions of postgresql client same time you may use

pg_dump --cluster 9.2/main [other pg_dump options]

for old cluster and

pg_dump --cluster 9.3/main [other pg_dump options]

for new

View accepted answer on askubuntu for details: https://askubuntu.com/a/647341/1044581


I was also facing same issue. First, I removed old pgdump versions. Mostly it is part of postres-client. So, remove them by using

apt-get remove postgresql-client-common

Install the version as per your requirement, by executing following commands. I am using ubuntu 16.04. Replace, "xenial" by your ubuntu version, in the first command. Command to check ubuntu version-
cat /etc/os-release

$ echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" > /etc/apt/sources.list.d/pgdg.list
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ apt-cache search postgresql | grep postgresql-client
$ apt-get install postgresql-client-9.5


tl:dr; no need to uninstall old clusters. Instead, put the following in ~/.postgresqlrc

<version> <clustername> <defaultdb>,

e.g., 9.6 main *

It's not necessary to uninstall old clusters. I looked in /usr/share/postgresql-common/pg_wrapper, which has these lines:

# for psql we always want the latest version, as this is backwards 
# to every major version that that we support
if ($cmdname eq 'pg_wrapper') {
    error "pg_wrapper should not be called directly, but through a symlink";
} elsif ($cmdname =~ /^(psql|pg_archivecleanup|pg_isready)$/) {
    $cmd = get_program_path ($cmdname, get_newest_version);
} else {
    $cmd = get_program_path ($cmdname, $version);

In other words, commands like psql will always be run with the latest installed version installed on your machine, but commands like pg_dump will not.

At the top of pg_wrapper is a hint:

# Call a PostgreSQL client program with the version, cluster and default
# database specified in ~/.postgresqlrc or
# /etc/postgresql-common/user_clusters.

man postgresqlrc tells us that ~/.postgresqlrc should be formatted thusly:

<version> <cluster name> <default database

pg_lsclusters gave me the following output:

Ver Cluster Port Status Owner    Data directory               Log file
9.5 main    5432 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
9.6 main    5433 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

Which meant that my ~/.postgresqlrc should look like this:

9.6 main *

Which gives me the desired version when I run pg_dump -V.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.