Postgresql

Homebrew 安裝 PostgreSQL 無法連接,數據庫文件與伺服器不兼容

  • October 9, 2019

這是我今天嘗試使用以下命令登錄我的本地主機 PosgreSQL 數據庫時收到的錯誤消息psql

psql: could not connect to server: No such file or directory
   Is the server running locally and accepting
   connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

我使用 Homebrew 安裝了 PostgreSQL,今天早上我使用該實用程序解除安裝並重新安裝,沒有觀察到任何變化。客戶端工作正常,psql我仍然可以使用它通過網路連接到數據庫。我每個月或兩個月只連接到我的本地數據庫一次,之前它工作得很好,所以我假設這是由於一些自動更新,但我不知道是哪個。Mac OS 最近將自身升級到 High Sierra (10.13)。

2014 年這裡出現了相同的錯誤消息(連結),但這是一個人無法啟動伺服器的情況。就我而言,我相信它正在執行 - 我已經使用過brew services start postgresql,是的,我今天已經重新啟動了幾次。但是,錯誤中提到的文件 ,/tmp/.s.PGSQL.5432在我的系統上不存在。我認為這是一些配置錯誤的情況。任何人都知道如何解決?

更新:我嘗試手動啟動伺服器(按照 Evan 的建議),我認為我取得了突破。這是我嘗試手動啟動它時遇到的錯誤:

FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.1.

initdb更新2:最終我通過替換我的數據目錄並使用標記為“正確”的答案中的空數據庫重新初始化它來解決這個問題。公平地說,所有三個答案都有幫助。我無法將數據庫從舊版本更新到新版本,因為我不再擁有舊版本 Postgres 的二進製文件。

如果您沒有任何數據,那麼 Brew 似乎有問題。您是否執行了升級, StackOverflow 上brew有兩個答案可以解決這個問題,我已將它們合併在一起以嘗試兩全其美。

  1. 備份
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
sudo mv /usr/local/var/postgres /usr/local/var/.postgres_bak;
  1. 確保您擁有最新版本
brew update
brew upgrade postgresql
  1. 要麼,要麼重新初始化,要麼嘗試升級你的數據目錄

  2. 核對它(從頭開始,留下舊的備份)

initdb /usr/local/var/postgres -E utf8
 嘗試升級它
_upgrade -b /usr/local/Cellar/postgresql/$myOldVersion/bin/ -B /usr/local/Cellar/postgresql/$myNewVersion/bin -d /usr/local/var/.postgres_bak -D /usr/local/var/postgres
4. 重啟伺服器。

brew services start postgresql

5. 刪除備份,如果伺服器重新啟動並且一切正常,請刪除備份

sudo rm -rf /usr/local/var/.postgres_bak

引用自:https://dba.stackexchange.com/questions/191328