Я первоначально установил пост-ГРЭС 9.2 на Ubuntu и позже обновил до 9,3 согласно инструкциям здесь: http://www.postgresql.org/download/linux/ubuntu/ (использующий пост-ГРЭС способный репозиторий).
Однако pg_dump, который является псевдонимом для/usr/share/postgresql-common/pg_wrapper, не стал обновленным.
pg_dump: server version: 9.3.4; pg_dump version: 9.2.8
pg_dump: aborting because of server version mismatch
Как я обновляю это? Я попытался выяснить, какие пакеты требуют обновления, но я не действительно даже уверен, что это - корректная вещь сделать.
Оказывается, установка клиента 9.3 не приводит к автоматическому удалению клиента 9.2, и если они оба находятся на машине в таком состоянии, то это то, что вы получите. Ответ заключается в удалении postgresql-клиента 9.2 (или любой другой подходящей старой версии в вашем случае).
можно проверить вывод команды
dpkg -l | grep postgres
чтобы посмотреть, какие версии установлены и активны. pg_dump обычно является частью пакета postgresql-клиент-common.
(И отредактируйте свой вопрос, непонятно, как вы обновились с версии 9.3 до 9.3 ... )
. tl: dr; нет необходимости удалять старые кластеры. Вместо этого поместите следующее в ~ / .postgresqlrc
,
например, 9.6 main *
Нет необходимости удалять старые кластеры . Я просмотрел / usr / share / postgresql-common / pg_wrapper
, в котором есть следующие строки:
# 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);
}
Другими словами, такие команды, как psql
, всегда будут запускаться с последней установленной версией. установлен на вашем компьютере, но такие команды, как pg_dump
, не будут.
Вверху pg_wrapper
есть подсказка:
# Call a PostgreSQL client program with the version, cluster and default
# database specified in ~/.postgresqlrc or
# /etc/postgresql-common/user_clusters.
man postgresqlrc
сообщает нам, что ~ / .postgresqlrc
должен быть отформатирован следующим образом:
<версия> <имя кластера> <база данных по умолчанию
pg_lsclusters
дал мне следующий результат:
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
Это означает, что мой ~ / .postgresqlrc
должен выглядеть так:
9.6 main *
Что дает мне желаемую версию, когда я запускаю pg_dump -V
.
Anọ m na-echekwa otu okwu ahụ. Nke mbu, ewepuru m ụdị pgdump ochie. Ọ kachasị ọ bụ akụkụ nke ndị ahịa. Ya mere, wepu ha site na iji
apt-get wepụ postgresql-client-common
Wụnye ụdị dị ka ihe ị chọrọ, site na imezu iwu ndị a. Ana m eji ubuntu 16.04. Dochie, "xenial" site na mbipute ubuntu gị, na iwu izizi.
Iwu ka ịlele ụdị ubuntu-
cat / etc / os-release
$ echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" > /etc/apt/sources.list.d/pgdg.list=1160328] $ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key tinye -
$ sudo apt-nweta nwelite
$ apt-cache ọchụchọ postgresql | grep postgresql-ahịa
$ apt-get install postgresql-client-9.5
Aghju riesciutu à risolve i mo prublemi disinstallendu u cliente postgresql
sudo apt-get remove postgresql-client-common
E poi reinstallendu
sudo apt-get install postgresql-client-11
Если вам нужно иметь несколько версий клиента postgresql одновременно можно использовать
pg_dump --cluster 9.2/main [other pg_dump options]
для старого кластера и
pg_dump --cluster 9.3/main [other pg_dump options]
для нового
Подробности см. в принятом ответе на askubuntu: https://askubuntu.com/a/647341/1044581