You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL11集群5433端口启动报exec不存在及配置参数不识别求助

PostgreSQL多版本共存启动报错原因及解决方案

报错原因

  1. 首次启动报错exec: 5433: not found的原因:
    pg_ctl本身没有-p指定端口的参数,该参数是postgres进程的启动参数,直接给pg_ctl传-p 5433时,pg_ctl会将5433识别为postgres二进制文件的路径去执行,自然找不到对应文件报错。
  2. 第二次启动报配置参数不识别的原因:
    服务器共存两个PG版本,当前环境变量默认调用的是9.6版本的pg_ctl,使用低版本的PG二进制程序去启动高版本(11)的数据目录,9.6版本不支持dynamic_shared_memory_type、max_wal_size、min_wal_size这些后续版本新增的配置参数,因此抛出配置不识别错误。

解决办法

  • 第一步先找到PG11版本对应的二进制文件目录,可执行命令find / -name pg_ctl | grep -E '11|pgsql-11'查询,常见路径为/usr/pgsql-11/bin/、/usr/local/pgsql-11/bin/等。
  • 直接使用全路径的PG11的pg_ctl执行启动命令,正确命令参考:
/<PG11二进制目录>/bin/pg_ctl -o "-p 5433" -D /storage/pgsql/11/data/ start
  • 若需要简化操作,可临时调整当前会话的环境变量优先级,将PG11的二进制目录放在PATH最前,执行以下命令后再调用pg_ctl就会默认使用11版本,该调整不会影响全局运行的9.6集群:
export PATH=/<PG11二进制目录>/bin:$PATH
  • 长期使用可配置别名避免版本混淆,在~/.bashrc中添加如下配置后执行source ~/.bashrc生效,后续启动对应版本直接调用pg_ctl11或pg_ctl96即可:
alias pg_ctl11='/<PG11二进制目录>/bin/pg_ctl'
alias pg_ctl96='/<PG9.6二进制目录>/bin/pg_ctl'

内容的提问来源于stack exchange,提问作者cunay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 06:06:06