在 Ubuntu 14.04 上我已完成此操作以获取最新的 postgres:
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 upgrade
然后我安装了9.4版本:
sudo apt-get install postgresql-9.4
然而现在我似乎有三个版本:
sudo service postgresql stop
* Stopping PostgreSQL 9.3 database server [ OK ]
* Stopping PostgreSQL 9.4 database server [ OK ]
* Stopping PostgreSQL 9.5 database server [ OK ]
我怎样才能只保留 9.4 并卸载其他版本?谢谢
更新:
根据评论所建议,我已经卸载了 9.3 和 9.5。
但是当我这样做时:
sudo service postgresql status
9.3/main (port 5432): down
9.4/main (port 5434): online
9.5/main (port 5433): down
到目前为止一切顺利,但是当我切换到 postgres 时:
sudo su postgres
并执行 psql,出现错误:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
答案1
PostgreSQL 的不同版本位于包 postgresql-9.* 中。
因此你应该删除两个包:
sudo apt-get purge postgresql-9.3 postgresql-9.5
然后你应该删除不必要的配置文件夹:
rm -r /etc/postgresql/9.3/ /etc/postgresql/9.5
如果有的话,请从 /var/lib/ 文件夹中:
/var/lib/postgresql/*
我希望它能对你有所帮助。
答案2
很晚才添加答案,但可能会对这里的人有所帮助。
简短回答:错误表明 postgres 配置在错误的(非默认)端口上。请使用正确的端口
长答案:
当您安装了多个版本的 Postgresql 时,它们都开始在不同的端口上运行 postgres 集群。在您的输出中,以下 postgres 版本正在运行:9.3 --> 5432
,9.4 -->5434
,9.5 --> 5433
。
sudo service postgresql status
9.3/main (port 5432): down
9.4/main (port 5434): online
9.5/main (port 5433): down
sudo apt-get purge postgresql-9.x
您可以使用您的版本在哪里卸载其他版本9.x
,但是在您的情况下,系统上存在的版本(9.4)配置为在端口 5434 上运行。因此,该错误Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
完全表明 psql 默认尝试连接到5432
不再连接任何 postgres 的端口。
这里有两个解决方案:
psql -p 5434
在 psql 命令中使用ie 端口选项 (-p/--port)。- 或者配置你的postgres服务器
port
配置值以/etc/postgresql/9.5/main/postgresql.conf
在5432上提供服务。更改后不要忘记重新启动postgres。