我在同一台服务器上运行PostgreSQL 8.4和9.0(Ubuntu Lucid)。
我通过apt-get(8.4使用默认的软件包源,而从https://launchpad.net/~pitti/+archive/postgresql添加了ppa)来安装它们。
当我从命令行运行一个类似“createdb”的命令或启动“psql”shell时,我的系统默认使用PostgreSQL 8.4。
那么,如何强制这些命令使用PostgreSQL 9.0而不是8.4呢?
假设Ubuntu和Debian一样,那么你的两个PostGreSQL实例将运行在不同的端口上。
您可以轻松地检查configuration文件以查看哪个版本在哪个端口上:
$ 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 = ####”选项,因此可以使用它来select所需的版本。
使用--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
获取更多信息。
您可以使用dpkg -L <packagename>
来查看特定软件包拥有的文件。 使用postgresql 9软件包运行它,并查看该版本的createdb命令的存储位置。
大多数postgresql命令将通过端口或path适当select数据库来工作跨版本,但是这当然不适用于启动脚本和创build命令。