我試圖在從原始程式碼建立 PostgreSQL 實例後安裝它,但postmaster
在啟動資料庫叢集之前運行守護程式似乎不起作用。這是我啟動時收到的錯誤訊息:
postgres@Home:~$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
LOG: could not bind IPv4 socket: Address already in use
HINT: Is another postmaster already running on port 5432? If not, wait a few seconds
and retry.
WARNING: could not create listen socket for "localhost"
FATAL: could not create any TCP/IP sockets
經過谷歌搜尋後,我能找到的唯一結果給了我一些提示,告訴我要執行以下命令,其輸出如下:
postgres@Home:~$ lsof -i :5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 1169 postgres 3u IPv4 1998 0t0 TCP localhost:postgresql (LISTEN)
postgres@Home:~$ netstat -an|grep :5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
這讓我相信守護postmaster
程式試圖鎖定的連接埠的連接實際上是可用的。關於可能導致它的原因有什麼想法嗎?
如果你好奇的話,我正在運行 pgsql 9.2.3。 (此外,如果這是錯誤的 Stack Exchange 站點,請將此問題移至 Stack Overflow 或程式設計師。)
答案1
啟動失敗時的錯誤訊息postmaster
和netstat
輸出顯示已經有一個進程正在使用5432
TCP 連接埠。可能 PostgreSQL 已經作為系統的一部分安裝了。看看你是否有postgresql-9.1安裝包,並輸出pg_lsclusters
.
如果您想將自己編譯的 PostgreSQL 與為 Ubuntu 預先打包的 PostgreSQL 並行運行,則有必要port
更改/usr/local/pgsql/data/postgresql.conf
.
另一方面,如果您只想執行自編譯的 PostgreSQL 並使用預設端口5432
,您可以刪除 Ubuntu 軟體包或透過編輯在啟動時停用叢集/etc/postgresql/9.1/main/start.conf