我在同一台服务器(Ubuntu Lucid)上运行 PostgreSQL 8.4 和 9.0。
我通过 apt-get 安装了它们(8.4 使用默认软件包源,9.0 在添加 ppa 后https://launchpad.net/~pitti/+archive/postgresql)。
当我从命令行运行“createdb”之类的命令或启动“psql”shell 时,我的系统默认使用 PostgreSQL 版本 8.4。
那么,如何强制这些命令使用 PostgreSQL 9.0 而不是 8.4?
答案1
假设 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=####”选项,因此您可以使用它来选择所需的版本。
答案2
使用--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
更多信息。
答案3
您可以使用它dpkg -L <packagename>
来查看特定包拥有的文件。使用 postgresql 9 包运行它,并查看该版本的 createdb 命令存储在哪里。
大多数 postgresql 命令可以跨版本工作,通过端口或路径适当选择数据库,但这当然不适用于启动脚本和创建命令。