Postgresql
pg_dump 與 psql 版本不同
我將 postgres 更新到 14 版
sudo apt upgrade
。psql --version psql (PostgreSQL) 14.1 (Ubuntu 14.1-2.pgdg20.04+1)
但
pg_dump
沒有升級其他所有內容:pg_dump --version pg_dump (PostgreSQL) 12.9 (Ubuntu 12.9-2.pgdg20.04+1)
知道為什麼嗎?
我還清除了所有 postgres 並重新安裝
postgresql-14
:sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-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 sudo apt-get -y install postgresql-14
但是之後:
pg_dump --version Error: PostgreSQL version 12 is not installed
執行 Ubuntu 20.04。
更新:
添加執行結果
pg_lsclusters
pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 12 main 5432 down,binaries_missing postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log 14 main 5433 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
的輸出
pg_lsclusters
表明 Postgres 12 二進製文件在沒有先刪除 Postgres 12 實例的情況下被解除安裝。請注意該Status
列如何顯示binaries_missing。刪除腳本會特別注意在您解除安裝時不要破壞您的數據,這就是為什麼實例及其數據可能有點粘滯的原因。要刪除“殭屍”實例,請使用
$ sudo pg_dropcluster 12 main
然後只有
14/main
實例會保留在列表中,通過 Debian/Ubuntu pg_wrapper 腳本pg_lsclusters
的 pg_dump 和其他客戶端應用程序將首先停止選擇實例。12/main
您可能還想將您的
14/main
實例重新定位到該5432
埠,因為它是 Postgres 的預設埠,如果您不打算在同一主機上擁有多個實例,使用預設埠將使您的生活更輕鬆。