问题描述
我在同一台服务器(Ubuntu Lucid)上运行PostgreSQL 8.4和9.0。
我通过apt-get(8.4用默认软件包源,以及从https://launchpad.net/~pitti/+archive/postgresql添加ppa后的9.0)安装了它们。
当我从命令行运行类似”createdb”的命令或启动”psql” shell时,系统上默认使用PostgreSQL 8.4版。
那么,如何强制这些命令使用PostgreSQL 9.0而不是8.4?
最佳方法
假设Ubuntu与Debian做相同的事情,那么您的两个PostGreSQL实例将在不同的端口上运行。
您可以轻松地检查配置文件以查看哪个版本在哪个端口上:
$ grep -H '^port' /etc/postgresql/*/main/postgresql.conf
/etc/postgresql/8.4/main/postgresql.conf:port = 5432
/etc/postgresql/8.3/main/postgresql.conf:port = 5433
大多数PostGreSQL命令采用“ -p ####”或”–port=####”选项,因此您可以使用它来选择所需的版本。
次佳方法
使用--cluster
选项,例如(假设两个集群都被命名为默认主集群):
psql --cluster 8.4/main
psql --cluster 9.0/main
通用模式为:
--cluster version/name # for local connections
--cluster version/host:port # for TCP/IP connections
要列出所有已安装的群集(名称,端口,状态,数据目录等),请使用pg_lsclusters
命令。
有关更多信息,请检查man pg_wrapper
。