4

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.

7

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).

  • 2
    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 '15 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 '16 at 6:05
4

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 ... )

0

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 
compatible
# 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.

0

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

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.